#jquery #validation
#jquery ( jquery ) #валидация
Вопрос:
Я использую этот плагин jquery: http://docs.jquery.com/Plugins/Validation
и я хочу написать условное утверждение.
Если пользователь оставляет определенное поле формы пустым, то это поле не является обязательным. Однако, если они не оставляют его пустым, то оно должно начинаться с цифры
Комментарии:
1. Что у вас есть на данный момент? Было бы проще сказать вам, чего вам не хватает, если вы покажете свой JS (и связанный с ним HTML).
Ответ №1:
Я думаю, что для части «должно начинаться с числа» вам понадобится пользовательское правило.
Для части «требуется, если другое поле не является пустым» вы можете использовать выражение зависимости, чтобы решить, требуется ли оно при запуске средства проверки:
Соедините их вместе, и у вас получится что-то вроде этого:
<form>
<input name="first">
<input name="second">
</form>
$.validator.addMethod("startsWithNum", function(input, element) {
// First char must be digit if not empty
return ! input || input.match(/^[0-9]/);
}, "This field must start with a number");
$('form').validate({
rules: {
first: {required : true},
second: {
"startsWithNum" : true,
required: function() {
// required if <input name="first"> is not empty
return $('[name="first"]').val() !== '';
}
}
}
});
Демонстрация: http://jsfiddle.net/qCELA/2 /
В форме, которую мне нужно сделать, есть только один ввод. Если пользователь оставил его пустым, то никакие правила не применяются. В противном случае это единственное поле ввода должно начинаться с числа.
Если у вас есть только одно поле ввода, пользовательское правило — это все, что вам нужно:
$('form').validate({
rules: {
second: {"startsWithNum" : true}
}
});
Демонстрация: http://jsfiddle.net/qCELA/3 /
Комментарии:
1. в вашем ответе было два поля ввода. в форме, которую мне нужно сделать, есть только один ввод. Мне нужно, чтобы правило для этого единственного ввода менялось в зависимости от того, оставил ли посетитель это единственное поле ввода пустым или нет. Если пользователь оставил его пустым, то никакие правила не применяются. В противном случае это единственное поле ввода должно начинаться с числа.
2. Хорошо, я думал, вы имели в виду два отдельных поля. В этом случае просто удалите все правила, кроме
startsWithNum
, см. Редактирование .3. Теперь, глядя на первый пример, это не имеет смысла — фактически требуются оба поля. Однако это имело бы смысл при другой настройке…