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