在Chrome中JavaScript提交功能只能使用一次
问题描述:
我创建了一个注册表单。如果所有三个字段都有正确的值,则我提交表单。否则会显示错误并且表单未提交。在Chrome中JavaScript提交功能只能使用一次
function checkUserValidation() {
if ((validateEmail() == true) && (validatePassword() == true) && (validateRepeatPassword() == true)) {
document.getElementById('signup-form').submit(); // This works only first time in chrome..
return true;
} else {
return false;
}
}
<form id="signup-form">
<div class="container">
<label> <b>Email</b> </label>
<input id="signup-email" class="signup_field" type="text" name="signup-email" required onfocusout="validateEmail()" />
<label id="Invalid-Signup-Email" style="visibility:hidden;"></label>
<label> <b>Password</b> </label>
<input id="signup-pass" class="signup_field" type="password" name="signup-pass" required onfocusout="validatePassword()" />
<label id="Invalid-Signup-Pass" style="visibility:hidden;"></label>
<label> <b>Confirm your Password</b> </label>
<input id="signup-rep-pass" class="signup_field" type="text" name="signup-rep-pass" required onfocusout="validateRepeatPassword()" />
<label id="Invalid-Signup-Rep-Pass" style="visibility:hidden;"></label>
</div>
<div class="clearfix">
//following code does not work properly
<input class="signupbtn" type="button" name="signup" value="Sign Up" onclick="return checkUserValidation(); submit()" />
</div>
</form>
问题是submit
功能仅一次在Chrome(工作在IE罚款)。下一次,即使我输入了所有正确的值,表单也不会提交。
在Stack Overflow上提到的搜索和尝试的解决方案,但没有任何工作。
答
首先“validateEmail”,“validatePassword”和“validateRepeatPassword”没有在任何地方定义。其次,当你在检查所有的字段级别验证后已经提交表单时,那么返回true语句有什么意义;
答
看看你提交的输入,你是返回一个值return checkUserValidation();
和您所提交的submit();
<input class="signupbtn" type="button" name="signup" value="Sign Up" onclick="return checkUserValidation(); submit()" />
后,我们不能把任何东西后return语句因为执行在这一点上死去或完成。
我猜你试图做一些事情,如:
if(checkUserValidation() == true){ submit(); }
我建议你做一个JS文件(不使用内联JS),然后尝试用if语句 above
你能否介绍一下你已经尝试过的*的解决方案,以便我们不会给你同样的建议。 –
请提供'validateEmail','validatePassword'和'validateRepeatPassword'来看看。这些方法可能是一个问题。 – MarceloBarbosa