Проверка JQuery: требуется (выражение зависимости) - PullRequest
2 голосов
/ 08 февраля 2012

Я хочу, чтобы поле стало обязательным только в том случае, если выбран конкретный параметр или выбрана определенная радиокнопка, или когда определенная строка введена в поле ввода текста (все необходимые примеры (выражение зависимости), которые я могу найти Предположим, что зависимость в том, является ли вход отмеченным / не отмеченным или заполненным / незаполненным в случае текстовых полей)

Вот пример того, что мне нужно, основываясь на разделе радио:

Семейное положение (обязательное поле):

<input name="status" id='status'type="radio" value="couple" checked="checked" />
<input name="status" id='status'type="radio" value="single male"  />
<input name="status" id='status'type="radio" value="single female" />

Имя партнера (зависимое поле - требуется только при выборе «Пара» сверху)

<input name="partner" type="text"  id="partner">

Пример 2: Обязательное поле = Место проведения

<select name="venue" id="venue">
<option value="">Please select venue</option>
<option>London EC1</option>
<option>London E9</option>
<option>Birmingham</option>

и т.д.. Зависимое поле = пользователь (требуется только для одного из указанных выше вариантов, скажем, «Бирмингем»)

<input name="user" type="text" id="user">

Как мне адаптировать пример, показанный на http://docs.jquery.com/Plugins/Validation/Methods/required#dependency-expression для вышеуказанных ситуаций?

$("#myform").validate({
  rules: {
    details: {
      required: "#other:checked"
    }
  }, debug:true
});
$("#other").click(function() {
  $("#details").valid();
});

Я пробовал:

user: {
      required: "#venue:('birmingham')"
    }

и

partner: {
      required: "#status:('couple')"
    }

но это приводит к тому, что пользователь и партнер требуются независимо от результатов в месте и статусе

1 Ответ

4 голосов
/ 08 февраля 2012

Для первого, ваши радиовходы должны иметь разные идентификаторы:

<input name="status" id='statusCouple' type="radio" value="couple" checked="checked" />
<input name="status" id='statusSingleMale' type="radio" value="single male"  />
<input name="status" id='statusSignleFemale' type="radio" value="single female" /> 

Тогда ваше правило может выглядеть так:

partner: {
  required: "#statusCouple:checked"
}

Для второго просто сделайтеПравило вот так:

user: {
  required: function(element) { return $("#venue").val() == 'Birmingham'; }
}       

Нужно сделать свое дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...