【问题标题】:Calling two functions in Firefox在 Firefox 中调用两个函数
【发布时间】:2014-04-11 17:56:07
【问题描述】:

当我提交一个网络表单时,我会调用两个函数,如下所示:

<form action="myaction" name="myform" method="post" onsubmit="return submithandler(this) && validate(this)">

javascript:

function submithandler (form) {
// a function that replaces some diacritical marks to the correct form
return true;
};

function validate(form) { 
// huge validation code
};

在所有浏览器中都能正常工作,Firefox 除外;此浏览器执行 submithandler(this) 部分,但忽略 validate(this)。如果我像这样(如下)制作表单标签,它会进行验证但忽略 submithandler(this)。

<form action="myaction" name="myform" method="post" onsubmit="return validate(this) && submithandler(this)">

有什么想法吗?

编辑:

Firefox 的问题一定是在这个脚本中?也许 var form = event.target; ?请看这里:Change characters on form submit

// 脚本替换表单中所有文本字段中的所有字母(或其他)实例。

 function submithandler (form) {
 var form = event.target;
 var i, l;
  for (i = 0, l = form.elements.length; i < l; i += 1) {
 if (form.elements[i].type === 'text') {
  form.elements[i].value = form.elements[i].value.replace(/Ş/g, 'Ș');
  form.elements[i].value = form.elements[i].value.replace(/ş/g, 'ș');
  form.elements[i].value = form.elements[i].value.replace(/Ţ/g, 'Ț');
  form.elements[i].value = form.elements[i].value.replace(/ţ/g, 'ț');
    }
    }
     return true; 
     };

【问题讨论】:

  • 你试过onsubmit="return(validate(this) &amp;&amp; submithandler(this))" 吗?请注意,您的方法可能首先是错误的。也许您应该启动提交处理程序并从其中调用验证方法。而且最好不要使用内联javascript。
  • validate() 是否返回 true?
  • onsubmit="return(validate(this) && submithandler(this))" 不能解决问题。
  • @Deanna - validate() 由许多“ifs”组成。它们都返回 false。
  • 如果它永远不会返回 true,则永远不会调用 submithandler&amp;&amp; 的这种短路行为在所有类似语言中都很常见。

标签: javascript forms firefox


【解决方案1】:

在 submithandler 函数中调用 validate 函数:

function submithandler (form) {
// a function that replaces some diacritical marks to the correct form
if(isValid(form)){
   return true;
} else{
   return false;
}
};



    function isValid(form) { 
    // huge validation code
    //validation code: must return true if valid
       if(valid){ 
    return true;
    } else {
    return false;
    }
    };

【讨论】:

  • 请问我该怎么做? Javascript 级别:初学者。
  • 当我在 submithandler (form) 中添加 validate(form) 时,表单会在第一个验证警报(“请输入内容”)之后立即提交。调用验证,但提交表单时未检查所有输入字段...
  • 即使我删除返回 true;来自提交处理程序(表单)。
  • 如果这个函数主要用于验证我建议你使用jquery验证。 stackoverflow.com/questions/15060292/…
  • @melt321 如果验证应该检测到错误,那么您的样本会忽略结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 2019-09-13
  • 2021-02-04
  • 2020-08-17
  • 1970-01-01
相关资源
最近更新 更多