У меня есть одна форма, которая, в зависимости от того, какая радио-кнопка нажата (Войти или Зарегистрироваться), отображает:
- адрес электронной почты
- пароль
или:
- имя
- возраст
- адрес электронной почты
- пароль
Нажатие на радиокнопка переключает видимость полей Логин / Регистрация:
<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 , и я хотел бы использовать следующие правила:
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.Я что-то упустил?