jQuery Validate プラグインを使用して検証するフォームがあります。また、パスワードの強度を確認するカスタム ビルドの検証スクリプトもあります。
パスワード検証関数 (validatePwdValid) を呼び出すように送信ハンドラーを設定しました。パスワードが有効な場合はフォームを送信し、パスワードが無効な場合は送信しません。Chrome では動作しますが、Firefox では動作しません。Chromeで動作しているので、関数の1つのパラメーターリストの「イベント」が問題を引き起こしていると思いますが、それでも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 は引き続きフォームを送信します。