У меня есть один вид, что, в зависимости от того, какая кнопка радио щелкнул (Войти или Регистрация) отображает либо:JQuery Validation: Изменение правил Динамически
- адрес электронной почты
- пароль
или:
- имя
- возраст
- адрес электронной почты
- пароль
При нажатии на кнопку радио переключает видимость полей Войти/Регистрация:
<form id="myForm">
<input name="userAction" type="radio" value="login" checked="checked">Login</input>
<br />
<input name="userAction" type="radio" value="signup">Sign Up</input>
<div id="loginFields" style="display:none">
<!-- Login fields (email address and password) -->
</div>
<div id="signupFields" style="display:none">
<!-- Signup fields (name, age, email address, password) -->
</div>
</form>
Я использую jQuery Validation plug-in, и я хотел бы используйте следующие правила:
var signupRules = {
emailAddressTextBox:
{
required: true,
email: true
},
passwordTextBox:
{
required: true,
minlength: 6,
maxlength: 24,
passwordValidationRule: true // custom regex added with $.validator.addMethod()
}
};
var loginRules = {
nameTextBox:
{
required: true,
maxlength: 50
},
loginEmailAddressTextBox:
{
required: true,
email: true
},
loginPasswordTextBox:
{
required: true,
minlength: 6,
maxlength: 24,
passwordValidationRule: true // custom regex added with $.validator.addMethod()
},
loginPasswordAgainTextBox:
{
required: true,
minlength: 6,
maxlength: 24,
equalTo: "#loginPasswordTextBox"
passwordValidationRule: true // custom regex added with $.validator.addMethod()
}
};
Как я могу добавить правильное правило проверки динамически на основе :
$("input[name='userAction']").change(function() {
if ($("input[name='userAction']:checked").val() === "login") {
// use loginRules
} else {
// use signupRules
}
});
Я попытался следующие:
$("#myForm").validate({
rules: ($("input[name='userAction']:checked").val() === "login") ? loginRules : signupRules;
});
Но так как мои Вход поля отображаются по умолчанию, его валидация работает, но сценарий Регистрация не; по какой-то причине он хочет проверить поля Login. Я что-то упускаю?
Вы заменяете элементы внутри формы или показываете скрытые элементы в форме? Я бы установил валидацию для двух отдельных форм, а затем переключил видимость двух форм в зависимости от выбранного параметра. – zzzzBov
Это единственная форма, в которой видимость полей Войти/Регистрация переключается с помощью переключателя. – Bullines
метод проверки может быть вызван только один раз для каждой формы. Подумайте об этом как о инициализации. Взгляните на [этот пост] (http://suntouchersoftware.com/2013/07/05/tips-for-using-the-jquery-validation-plugin/) для деталей. – lboullo0