Подтвердите пароль с помощью jQuery Validate
Я пытаюсь использовать плагин jQuery validate для подтверждения ввода пароля.
Однако я не хочу, чтобы это было обязательное поле.
Только если пользователь хочет изменить пароль, ему нужно будет подтвердить его.
Если нет, оба поля не должны быть проверены.
jQuery('.validatedForm').validate({
rules: {
password: {
required: true,
minlength: 5
},
password_confirm: {
required: true,
minlength: 5,
equalTo: "#password"
}
}
});
Это работает отлично, но снова требуется оба поля.
Я хотел бы иметь это необязательное, если кто-то просто хочет изменить, например, их адрес электронной почты или имя пользователя и оставить пароль один.
Ответы
Ответ 1
Удалите правило required: true
.
Демо: Fiddle
jQuery('.validatedForm').validate({
rules : {
password : {
minlength : 5
},
password_confirm : {
minlength : 5,
equalTo : "#password"
}
}
Ответ 2
Просто быстрый звонок здесь, чтобы надеяться помочь другим... Особенно с новой версией (так как это 2 года)...
Вместо некоторых статических полей, определенных в JS, вы также можете использовать атрибуты data-rule-*
. Вы можете использовать встроенные правила, а также настраиваемые правила.
См. http://jqueryvalidation.org/documentation/#link-list-of-built-in-validation-methods для встроенных правил.
Пример:
<p><label>Email: <input type="text" name="email" id="email" data-rule-email="true" required></label></p>
<p><label>Confirm Email: <input type="text" name="email" id="email_confirm" data-rule-email="true" data-rule-equalTo="#email" required></label></p>
Обратите внимание на атрибуты data-rule-*
.
Ответ 3
Он работает, если значение id и значение имени разные:
<input type="password" class="form-control"name="password" id="mainpassword">
password: { required: true, } ,
cpassword: {required: true, equalTo: '#mainpassword' },
Ответ 4
Я реализую его в Play Framework, и для меня это сработало вот так:
1) Обратите внимание, что я использовал правило data-ruleTo во входном теге для id inputPassword1.
Раздел кода пользовательской формы в моем модуле:
<div class="form-group">
<label for="pass1">@Messages("authentication.password")</label>
<input class="form-control required" id="inputPassword1" placeholder="@Messages("authentication.password")" type="password" name="password" maxlength=10 minlength=5>
</div>
<div class="form-group">
<label for="pass2">@Messages("authentication.password2")</label>
<input class="form-control required" data-rule-equalTo="#inputPassword1" id="inputPassword2" placeholder="@Messages("authentication.password")" type="password" name="password2">
</div>
2) Поскольку я использовал валидатор в Modal
$(document).on("click", ".createUserModal", function () {
$(this).find('#userform').validate({
rules: {
firstName: "required",
lastName: "required",
nationalId: {
required: true,
digits:true
},
email: {
required: true,
email: true
},
optradio: "required",
password :{
required: true,
minlength: 5
},
password2: {
required: true
}
},
highlight: function (element) {
$(element).parent().addClass('error')
},
unhighlight: function (element) {
$(element).parent().removeClass('error')
},
onsubmit: true
});
});
Надеюсь, это поможет кому-то:).
Ответ 5
jQuery('.validatedForm').validate({
rules : {
password : {
minlength : 5
},
password_confirm : {
minlength : 5,
equalTo : '[name="password"]'
}
}
В общем, вы не будете использовать 'id = "password" ', как это.
Таким образом, вы можете использовать '[ name= "password" ]' вместо "#password"