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