我有以下通过 ajax 添加到页面的表单
<script>
$(document).ready(function() {
jQuery.validator.setDefaults({
errorPlacement: function(error, element) {
error.appendTo('#invalid_' + element.attr('id'));
}
});
var validator = $("#login_form").validate({
rules: {
user_email: {
required: true,
email: true
},
password: {
required: true
}
}
});
});
</script>
<form id="login_form">
<center><br/><br/><br/>
<div class="login_div">
<center><h3>Log In</h3>
<table align="center" width="400px">
<tr><td class="input_td">Email:</td><td class="textfield_td"><input type="text" class="textfield" id="user_email" name="user_email"/></td></tr>
<tr><td colspan="2" id="invalid_user_email"></td></tr>
<tr><td class="input_td">Password:</td><td class="textfield_td"><input type="password" class="textfield" id="password" name="password"/></td></tr>
<tr><td colspan="2" id="invalid_password"></td></tr>
<tr><td colspan="2" class="error_text" id="login_error"></td></tr>
</table>
<input type="button" onclick="check_login();" value="Log In"/></center>
</div>
</center>
</form>
该check_login
方法具有以下结构:if($("#login_form").valid()) {do something} else {return;}
当我第一次单击“登录”按钮时,表单验证正确,例如,如果缺少字段或提供了无效的电子邮件,则会显示相应的错误消息。但是,如果我然后再次单击登录按钮,valid()
即使缺少字段或存在无效电子邮件并且没有显示错误消息,该方法也会返回 true。
感谢您对此有所了解
编辑:此解决方案似乎适用于登录是按钮的 id
$("#login").click(function() {
validator.resetForm();
if(validator.form()) {
alert('valid');
}
else {
return;
}
});