首先:我是JavaScript新手。 所以..我有基本形式的密码,重复密码,电子邮件和重复的电子邮件字段。我想检查密码是否等于重复密码。如果不是,则会显示警告消息并重新加载页面。电子邮件和重复电子邮件相同。 但如果密码和重复密码不相等且电子邮件和重复电子邮件不相等,则会显示第一条警报消息,然后第二条消息(此时为电子邮件)显示得太快。我想在两个字段都不匹配时只显示一条警报消息。
<script type="text/javascript">
function checkFields() {
var pass= document.getElementById('password');
var reppass= document.getElementById('reppass');
var email= document.getElementById('email');
var repemail= document.getElementById('repemail');
if (pass.value != reppass.value) {
alert('Passwords dont match');
window.location.reload();
}
if (email.value != repemail.value) {
alert('Emails dont match');
window.location.reload();
}
else if (pass.value != reppass.value && email.value != repemail.value) {
alert('Both fields dont match');
window.location.reload();
}
}
</script>
形式:
<form onSubmit="checkFields()">
<p><label>Password:</label> <input name="password" id="password" required="true" type="password" /></p>
<p><label>Repeat password:</label> <input name="reppass" id="reppass" required="true" type="password" /></p>
<p><label>Email:</label> <input name="email" id="email" required="true" type="email" /></p>
<p><label>Repeat Email:</label> <input name="repemail" id="repemail" required="true" type="email" /></p>
<p><input type="submit" value="Send"></p>
</form>
答案 0 :(得分:1)
if( condition1 ) {
}else if( condition2 ) {
}else{
…
}
我相信这就是你想要的。
答案 1 :(得分:1)
你可以简单地从if这样的句子返回:
function checkFields() {
var pass = document.getElementById('password');
var reppass = document.getElementById('reppass');
var email = document.getElementById('email');
var repemail = document.getElementById('repemail');
if (pass.value != reppass.value && email.value != repemail.value) {
alert('Both fields dont match');
window.location.reload();
}
if (pass.value != reppass.value) {
alert('Passwords dont match');
window.location.reload();
return;
}
if (email.value != repemail.value) {
alert('Emails dont match');
window.location.reload();
return;
}
}
我喜欢这种风格,因为它会阻止嵌套if子句。缺点是,你有多个可能令人困惑的返回点 - 这在很大程度上取决于函数的长度。
修改强>
更新了if块的顺序
答案 2 :(得分:1)
一种解决方案是将验证分解为单独的方法,然后仅在第一次验证成功时运行第二次验证。
以下是一个例子:
var FormValiditor = function() {
var pass = document.getElementById('password');
var reppass = document.getElementById('reppass');
var email = document.getElementById('email');
var repemail = document.getElementById('repemail');
return {
checkFields: function() {
if(checkPassword()){
return checkEmail();
}
return false;
},
checkPassword: function() {
if (pass.value != reppass.value) {
alert("Password don't match");
return false;
}
return true;
},
checkEmail: function() {
if(email.value != repemail.value){
alert("Emails do not match");
return false
}
return true
}
}
}();
然后,如果您正在使用jQuery(您应该使用它!),您可以在提交表单时运行验证。
$('form').submit(FormValidator.checkFields);
答案 3 :(得分:0)
if ...
else if ...
else if ...
...
else ...
应该如何构建它。你可以拥有任意数量的else if
。