当我调用所有JavaScript函数时,并不是所有这些函数都在运行



我正在尝试使用JavaScript验证HTML表单,我已经分别测试了所有的验证函数,当我这样做时,它们可以正常工作,但当出于某种原因将它们全部返回时,只有我的validatenamevalidateEmail函数可以工作,我想知道是否有人能给我一些提示,告诉我需要做什么才能使其工作?这是我的代码:

<script type="text/javascript">
function validatename() 
{
var x = document.forms["feedback"]["fullname"].value;
if (x == "") {
alert('Name is not filled out');
return false;
}
} // validatename()   
</script>
<script type="text/javascript">
function validateEmail()
{
var validemail = document.forms["feedback"]["email"].value;
if (/(.+)@(.+).(.+)/.test(validemail)){
return true;
}
else {
alert('Invalid email or email not filled out')
return false;
}
} // validateEmail
</script>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
<script>
function agecheck() {
if($('input[name=age]:checked').length<=0)
{
alert("Please select your age");
return false;
}
} // agecheck
</script>

然后我通过以下方式将它们返回到我的HTML主体中:

<form name = feedback onsubmit=" validateEmail() && validatename() && agecheck() ">

EDIT:当我通过交换&amp;对于所以我没有得到短路评估——所有的函数都运行了,但出于某种原因,如果validatename和validateEmail都返回为非false,那么agecheck就不会运行,因此不会在应该运行的时候发出警报。

编辑2:好的,所以出于某种原因,是因为validatename要么返回为false,要么未定义,所以validateage不会返回,我只是将其修复为true或false,而不是未定义或false,这在某种程度上修复了它。谢谢大家的帮助

下面的示例不是一个有效的解决方案(意味着我没有测试任何东西)

但这是我写它的一个例子…只需要一个函数。

<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
<script>
function validateForm(){
//validate the name
var x = document.forms["feedback"]["fullname"].value;
if (x == "") {
alert('Name is not filled out');
return; // script ends right here if the name field is empty.
}
// validate the email
var validemail = document.forms["feedback"]["email"].value;
if (!/(.+)@(.+).(.+)/.test(validemail)){
alert('Invalid email or email not filled out');
return;  // script ends right here if the email field is incorrect.
}
// Validate the age
if($('input[name=age]:checked').length<=0){
alert("Please select your age");
return;   // script ends right here if no age checkbox/radio field is checked.
}
// If the script wasn't halted already...
alert("All fine! Let's submit.");
//...
}
</script>

如果您愿意,现在可以将一个函数调用为内联onsubmit。我会用另一种方式。。。但是有很多方法可以验证表单。现在,从你发布的代码来看,我只能说这些了。

若要在出现失败条件时真正停止提交,您应该阅读有关preventDefault()的内容。

由于某种原因,validatename返回为undfine或false而不是true或false的事实使validatege在所有情况下都无法成功运行。在更改代码以使validatename返回true或false后,validateage函数现在可以按预期工作了。

尝试

<form name ="feedback" onsubmit="validateEmail();validatename();agecheck();">

<form name ="feedback" onsubmit="function() { validateEmail(); validatename(); agecheck(); }">

相关内容

  • 没有找到相关文章

最新更新