JQuery добавить метод проверки для проверки в отношении другого элемента в форме - PullRequest
1 голос
/ 06 февраля 2012

Я пытаюсь создать собственный метод проверки в JQuery, и мне не удается заставить его работать должным образом.

Вот что я хочу сделать:

<div class="row">
    <label for="fld-stories">Stories</label>
    <select id="fld-stories" class="valid" name="stories" title="">
        <option value="">--</option>
        <option value="1" label="1">1</option>
        <option value="2" label="2">2</option>
        <option value="3" label="3">3</option>
        <option value="4" label="4">4</option>
        <option value="5" label="5">5</option>
    </select>
</div>

<div id="row_master_bedroom_location" class="row">
    <label for="fld-master_bedroom_location">Master Bedroom Location</label>
    <select id="fld-master_bedroom_location" name="master_bedroom_location" title="">
        <option value="up">Upstairs</option>
        <option value="down">Downstairs</option>
    </select>
</div>

Если пользователь выбирает расположение главной спальни наверху (см. Второй выбор), количество этажей для дома должно быть больше или равно 2 (что логично, так как главная спальня не может быть наверху, если есть только один этаж).

Для этого я пытаюсь добавить собственный метод в мой валидатор JQuery:

$.validator.addMethod('masterBedroomLocation', function(value, element, params) {
    if (value == 'up' && $("#fld-stories").val() < 2){
        return false;
    }
}, 'You cannot select &quot;Upstairs&quot; for a one&ndash;story home');     

Я не уверен, как получить значение другого элемента в форме, япопробовал старый способ JQuery, но он, похоже, не работает.

Для дополнительной информации я добавляю пользовательский метод в глобальные файлы javascript, в функцию, которая связывает проверку JQuery с каждой формой, которая имеетспециальное имя класса.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2012

Я немного улучшил свой код. Вот новый метод:

$.validator.addMethod('masterBedroomLocation', function(value, element, params) {
    if($('#fld-master_bedroom_location').val() == 'down'){
        return true;
    }
    else if($('#fld-master_bedroom_location').val() == 'up' && $("#fld-stories").val() >= 2){
        return true;
    }else{
        return false;
    }
}, 'You cannot select &quot;Upstairs&quot; for a one&ndash;story home');

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 07 февраля 2012

Мне удалось заставить его работать.Похоже, что селектор Jquery $ ("# fld-story") работает правильно.По какой-то причине я не знаю, этот метод работает, если я инвертирую способ проверки и возвращаю true вместо false.

Вот новый метод:

$.validator.addMethod('masterBedroomLocation', function(value, element, params) {
    if (value == 'up' && $("#fld-stories").val() >= 2){ 
        return true;
    }
}, 'You cannot select &quot;Upstairs&quot; for a one&ndash;story home'); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...