我有一个表单,我正在使用 jQuery Validate 插件进行验证。我还有一个自定义构建的密码强度验证脚本。
我已将提交处理程序设置为调用密码验证函数(validatePwdValid),如果密码有效,我希望表单提交,但如果密码无效则不提交。我让它在 Chrome 中工作,但在 Firefox 中没有。因为它在 Chrome 中运行,我认为其中一个函数的参数列表中的“事件”导致了问题,但即使使用它,我也无法让它在 FireFox 中运行。
function validatePwdValid() {
if (pwdValid == true) {
form.submit();
} else {
e.preventDefault();
$('.form-validate-password .alert-error').removeClass('hide');
}
};
$(".form-validate-password").validate({
submitHandler: function(e) {
//this runs when the form validated successfully
validatePwdValid();
}
});
有任何想法吗?
添加更多代码以使其更清晰(但具有讽刺意味的是更复杂)。
$(function(){
var pwdInput = $('.form-validate-password #input-password');
var pwdValid = false;
// Function to ensure password conforms to strength requirements
function validatePwdStrength() {
var pwdValue = $(this).val();
pwdValid = false; // Start out false;
if (pwdValue.length > 7) {
$('#length').removeClass('invalid').addClass('valid');
pwdValid = true;
} else {
$('#length').removeClass('valid').addClass('invalid');
}
// There are many rules here there are ommitted about uppercase, numbers etc.
}
// Function to check that pwdValid is true, and if so submit the form, otherwise don't.
function validatePwdValid() {
if (pwdValid == true) {
form.submit();
} else {
event.preventDefault();
$('.form-validate-password .alert-error').removeClass('hide');
}
}
// When the user enters the password, run validatePwdStrength
pwdInput.bind('change keyup input', validatePwdStrength);
$(".form-validate-password").validate({
submitHandler: function(e) {
//this runs when the form validated successfully
validatePwdValid();
}
});
});
这里有一个小提琴:
如果您输入少于 8 个字符的密码并提交,您会在 Chrome 中看到错误消息,但在 Firefox 中不会。Firefox 仍将提交表单。