условный оператор проверки jquery?

#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. Теперь, глядя на первый пример, это не имеет смысла — фактически требуются оба поля. Однако это имело бы смысл при другой настройке…