Javascript 双警报窗口

Javascript 双警报窗口,javascript,forms,alert,Javascript,Forms,Alert,对于单个表单,我会收到双重警报提示:第一次弹出警报,然后当我单击“确定”时,相同的警报再次弹出。我认为我的代码应该在点击“else window.alert(sameWarning)”时发出一次警报,在到达“return false()”时停止。但似乎return false()导致了两次警报。可能是因为我在一个页面上有两个表单;然而,它们有两个单独的函数名(“SignInfo()”和“saveSignUp()”),并调用两个单独的表单(表单[0]和表单[1])?我认为我的代码是正确的,但我现在

对于单个表单,我会收到双重警报提示:第一次弹出警报,然后当我单击“确定”时,相同的警报再次弹出。我认为我的代码应该在点击“else window.alert(sameWarning)”时发出一次警报,在到达“return false()”时停止。但似乎return false()导致了两次警报。可能是因为我在一个页面上有两个表单;然而,它们有两个单独的函数名(“SignInfo()”和“saveSignUp()”),并调用两个单独的表单(表单[0]和表单[1])?我认为我的代码是正确的,但我现在还不能理解。任何帮助都将不胜感激。提前感谢

<script type="text/javascript">
//FIRST FUNCTION FOR FORMS[0]
function signinForm(){

        // var sameWarning = "The required fields were not submitted for the following error(s).  \n \n";
        var warningLogin = "The following field(s) require an entry: \n \n";
        var sameWarning = warningLogin;

        var userName = document.forms[0].userName.value;
        var pswd = document.forms[0].pswd.value;

        if(userName == ""){ 
        sameWarning += " - First Name \n";
        }

        if(pswd == ""){ 
        sameWarning += " - Password \n";
        }

        if (warningLogin == sameWarning){ 
            return true; 
            }

        else  { 
            window.alert(sameWarning);  
        }
    return false;   
   }

//SECOND FUNCTION CALL FOR FORMS[1] 
function saveSignUp(){

        // var warning = "The required fields were not submitted for the following error(s).  \n \n";
        var warning = "The following field(s) require an entry: \n \n";
        var same = warning;

        var firstName = document.forms[1].firstName.value;
        var lastName = document.forms[1].lastName.value;
        var email = document.forms[1].email.value;
        var phone = document.forms[1].phoneNumber.value;

        if(firstName == ""){ 
        //firstName.style.backgroundColor="red";
        warning += " - First Name \n";
        }

        if(lastName == ""){ 
        warning += " - Last Name \n";
        }

        if(email == ""){ 
        warning += " - Email \n";
        }

        if(phone == ""){ 
        warning += " - Work Phone \n";
        }

        if(phone < 5 ){
            warning += " - Must be a numberssss \n";
            }

        if (warning == same){
            return true; 
        } 

        else  { 
            alert(warning);         
        }
    return false;
   }

</script>

//表单[0]的第一个函数
函数SignInfo(){
//var sameWarning=“未提交以下错误所需的字段。\n\n”;
var warningLogin=“以下字段需要输入:\n\n”;
var sameWarning=警告登录;
var userName=document.forms[0].userName.value;
var pswd=document.forms[0].pswd.value;
如果(用户名==“”){
sameWarning+=“-名字\n”;
}
如果(pswd==“”){
sameWarning+=“-Password\n”;
}
如果(warningLogin==sameWarning){
返回true;
}
否则{
窗口警报(sameWarning);
}
返回false;
}
//表单的第二个函数调用[1]
函数saveSignUp(){
//var warning=“由于以下错误,未提交所需字段。\n\n”;
var warning=“以下字段需要输入:\n\n”;
var=相同=警告;
var firstName=document.forms[1].firstName.value;
var lastName=document.forms[1].lastName.value;
var email=document.forms[1].email.value;
var phone=document.forms[1].phoneNumber.value;
如果(firstName==“”){
//firstName.style.backgroundColor=“红色”;
警告+=“-名字\n”;
}
如果(lastName==“”){
警告+=“-姓氏\n”;
}
如果(电子邮件==“”){
警告+=“-电子邮件\n”;
}
如果(电话==“”){
警告+=“-工作电话\n”;
}
如果(电话<5){
警告+=“-必须是数字SSS\n”;
}
如果(警告==相同){
返回true;
} 
否则{
警报(警告);
}
返回false;
}
HTML

登录
注册

这是因为您调用了
signinfo();
两次

删除其中一个侦听器

onclick=“signinfo();“

onsubmit=“return signinfo()”


当你点击提交按钮时,你调用
signinfo();
。由于它是一个
submit
按钮,它将触发
onsubmit
事件,并调用
return signinfo()

这是因为你调用了
signinfo();
两次

删除其中一个侦听器

onclick=“signinfo();“

onsubmit=“return signinfo()”


当你点击提交按钮时,你调用
signinfo();
。由于它是一个
submit
按钮,它将触发
onsubmit
事件,并调用
return signinfo()

这是因为你调用了
signinfo();
两次

删除其中一个侦听器

onclick=“signinfo();“

onsubmit=“return signinfo()”


当你点击提交按钮时,你调用
signinfo();
。由于它是一个
submit
按钮,它将触发
onsubmit
事件,并调用
return signinfo()

这是因为你调用了
signinfo();
两次

删除其中一个侦听器

onclick=“signinfo();“

onsubmit=“return signinfo()”


当您单击submit按钮时,您将调用
SignInfo();
。由于这是一个
submit
按钮,它将触发
onsubmit
事件,并在您单击submit时调用
return SignInfo()

,首先触发click事件(调用您的函数),然后触发submit事件(再次调用函数)。只需删除提交按钮的onclick。

单击提交时,首先触发单击事件(调用函数),然后触发提交事件(再次调用函数)。只需删除提交按钮的onclick。

单击提交时,首先触发单击事件(调用函数),然后触发提交事件(再次调用函数)。只需删除提交按钮的onclick。

单击提交时,首先触发单击事件(调用函数),然后触发提交事件(再次调用函数)。只需删除提交按钮的onclick即可。

成功了!谢谢。我不知道方法调用的优先级高于提交调用。因此,onclick先进行,然后它也会自动触发对函数的提交调用?onsubmit和onclick之间没有区别,它们只是注册事件的方法因此,单击输入时会调用“saveSignUp()”,提交表单时会调用“return saveSignUp()”。恰好
input type=“submit"
是一种特殊的按钮,可以自动提交表单。这很管用!谢谢。我不知道方法调用的优先级高于提交调用。因此,onclick首先执行,然后它也会自动触发对函数的提交调用?onsubmit和onclick之间没有区别,它们只是用于元素上的egister事件处理程序。因此,在单击输入时调用“saveSignUp()”,在提交表单时调用“return saveSignUp()”
<h1>Login</h1>
<form method="post" onsubmit="return signinForm();" action="" >
    <input type="text" placeholder="Username/Email" name="userName">
    <input type="password" placeholder="Password" name="pswd" id="pswd">
    <input type="submit" onclick="signinForm();" value="Sign In">
</form>
<h1>Sign Up!</h1>
    <form method="post" onsubmit="return saveSignUp()" action="" >
    <input type="text" placeholder="First Name" name="firstName">
    <input type="text" placeholder="Last Name" name="lastName">
    <input type="text" placeholder="Email" name="email">
    <input type="text" placeholder="Phone Number" name="phoneNumber">
    <input type="submit" onclick="saveSignUp();" class="button wide" value="Request an Account">