Новый JQuery Validator
В настоящее время я использую проверку формы и комплексизацию вместе в поле пароля. Оба работают хорошо, используя этот код:
<script>
$('#signup_password').complexify({
bannedPasswords: <?php echo json_encode($banned_passwords); ?>
}, function (valid, complexity) {
var passwordstrength = Math.round(complexity);
$('#signup_password_strength')
.progress({
text: {
percent : '{percent}%'
},
value: passwordstrength
});
});
</script>
То, что я пытаюсь сделать, это сказать: "Если пароль недостаточно безопасен, он недействителен". Я создаю совершенно новый валидатор, в котором Сложность вызывается и запускается, как на веб-сайте Form Validator... что-то, что может первоначально вызвать ответ "обратитесь в службу поддержки". Хорошо, но выслушай меня.
Это мой скрипт валидатора:
(function($) {
FormValidation.Validator.password = {
html5Attributes: {
message: 'message',
minimumChars: 'minchars',
strengthScaleFactor: 'scale',
bannedPasswords: 'bannedpasswords',
minStrength: 'minstrength'
},
init: function(validator, $field, options) {
var minimumChars = options.minimumChars || 8,
strengthScaleFactor = options.strengthScaleFactor || 1,
bannedPasswords = options.bannedPasswords || [],
minStrength = options.minStrength || 20;
$field.complexify({
minimumChars: minimumChars,
strengthScaleFactor: strengthScaleFactor,
bannedPasswords: bannedPasswords
});
},
destroy: function(validator, $field, options) {
$field.complexify('destroy');
},
validate: function(validator, $field, options) {
var value = $field.val();
var passwordstrength = $field.complexify(Math.round(complexity));
if (passwordstrength === 0 && value.length > 0) {
return {
valid: false,
banned: true,
score: 0,
message: 'banned'
};
}
else if (passwordstrength === null || passwordstrength === 0 || value === '') {
return {
valid: false,
score: 0
};
}
else if (passwordstrength > 0 && passwordstrength < minStrength) {
return {
valid: false,
score: passwordstrength,
message: 'weak'
};
}
else
{
return {
valid: true,
score: passwordstrength
};
}
}
};
}(jQuery));
Когда я присоединяю этот валидатор ко входу, появляется ошибка консоли undefined is not an object (evaluating 'callback.call')
Я полагаю, что это вызвано функцией 'init'. Я подготовил этот JSFiddle, чтобы правильно показать это.
Я думаю, это больше, что я не понимаю JavaScript больше, чем проблема, связанная с проверкой формы или сложностью.