我有一个带有JS验证的表单,如果出现错误,提交按钮应该“灰显”并且表单不应该提交,但是最后几个函数似乎提交表单即使它们弹出了警报框!?!?!
按钮代码:
<input type="submit" name="button" id="button"
onclick='return formvalidation();' value="Next" />
非工作功能示例:
function BlankSite() {
var SiteNum= document.getElementsByName("sitesinput")[0].value;
if ((SiteNum == "") || (SiteNum == 0))
{
alert("You have not selected an amount of sites.")
document.forms[0].button.disabled=true;
return false;
}
}
功能发起人:
function formvalidation()
{
ZeroPhones();
BlankPC();
BlankSite();
BlankSeats();
phone_change();
}// End of formvalidation
这很奇怪,我尝试了各种各样的工作无济于事!
谢谢, 乙
答案 0 :(得分:8)
return false;
调用的函数中需要onclick
,在这种情况下formvalidation
。
通过“root”函数调用的函数返回false没有任何效果,返回值将丢失。
答案 1 :(得分:5)
他们返回false(并且中断,实际上是无法访问的代码),但结果永远不会返回到父验证函数。您的验证器(假设它与表单操作绑定)应如下所示:
function formvalidation(){
{
if (!ZeroPhones())
return false;
if (!BlankPC())
return false;
//
// keep checking for false and return false.
//
// default to return true
return true;
}
因此,当函数实际上返回false时,false返回会返回到绑定函数。
答案 2 :(得分:3)
调用javascript函数onSubmit of form而不是调用按钮onClick。
javascript代码
function validate()
{
alert('test');
return false;
}
<form action="test" method="post" onsubmit="return validate();">
这对我来说很好。
答案 3 :(得分:2)
BlankPC()由formvalidation调用,因此false返回到方法formvalidation()。 你的formvalidation()总是从结尾落下,这与返回true相同。 如果您希望在其中一个验证失败时返回false,则应该是:
function formvalidation()
{
retval = true;
retval &= ZeroPhones();
retval &= BlankPC();
retval &= BlankSite();
retval &= BlankSeats();
retval &= phone_change();
return retval;
}// End
这可以优化一堆,但你可以得到它的要点。
答案 4 :(得分:1)
formvalidation()未返回false。
也许你想要这样的东西:
function formvalidation()
{
if(!ZeroPhones() ||
!BlankPC() ||
!BlankSite() ||
!BlankSeats() ||
!phone_change())
return false;
}
答案 5 :(得分:0)
我对这个问题的解决方案是禁用提交按钮,直到验证成功为止。遵循这些原则。
function checkPassword() {
//this is my submit button
document.getElementById('nextBtn').setAttribute('disabled','disabled');
password1 = document.getElementsByName("pwd1")[0].value;
password2 = document.getElementsByName("pwd2")[0].value;
if (password1 == '') {
// If password not entered
alert ("Please enter Password");
return false;
} else if (password2 == ''){
// If confirm password not entered
alert ("Please enter confirm password");
return false;
} else if (password1 != password2) {
// If Not same return False.
alert ("\nPassword did not match: Please try again...");
return false;
} else {
document.getElementById('nextBtn').removeAttribute('disabled');
return true;
}
}