jQuery Validate, определяющий, выбран ли конкретный радиоэлемент, затем требующий ввода текста без идентификаторов - PullRequest
2 голосов
/ 14 марта 2011

Долгое время слушатель, впервые звонящий…

У меня есть два вопроса в форме, первый из которых - пара переключателей «Да» или «Нет»:

«Вы уже подали заявку у нас? () Да () Нет»

… второй из которых является текстовым вводом, допускающим небрежное значение даты:

"Если да , когда вы подали заявку? [ _ __ _ __ _ __ _ ] "

Вы, возможно, уже видите, куда я иду с этим… Я хочу, чтобы второй вопрос требовался только в том случае, если среди переключателей было выбрано «Да».

Я провел множество Google'ing, просматривая сайт jQuery (не весело и не просто), и искал этот очень хороший сайт, но при ближайшем ответе я всегда использую уникальные атрибуты ID. на радиовходах.

К сожалению, я нахожусь в ситуации, когда радиовходы не могут иметь атрибуты ID, потому что они генерируются CMS. Итак, я оставил попытку использовать атрибут уникального имени на паре радиовходов, а также проверить, является ли атрибут со значением «Да» «выбранным» / «установленным».

Вот мой HTML:

<li>
    <span class="reqField">*</span> Have you filed an application with us before?<br />
    <label class="radioInput"><input type="radio" name="app_prior_app" value="Yes" /> Yes</label>
    <label class="radioInput"><input type="radio" name="app_prior_app" value="No" /> No</label>
</li>
<li>
    <label for="app_prior_app_date">If <em>yes</em>, when did you apply?</label><br />
    <input type="text" name="app_prior_app_date" value="" size="40" id="app_prior_app_date" />
</li>

А вот мой JS пока :

app_prior_app: "required",
app_prior_app_date: {
    required: function(element) {
        return $("[name=app_prior_app]").val() == "Yes";
    }
}

Естественно, это не работает так, как хотелось бы. Я знаю, что если бы я мог подбрасывать идентификаторы на каждом радиовходе, это было бы проще для меня (я не слишком хорош в этом деле), но я предполагаю, что есть способ сделать это, используя только уникальный атрибут name и определение того, выбрано ли значение "Да", затем (и только тогда) можно продолжить и потребовать ввода текста?

Ответы [ 2 ]

4 голосов
/ 14 марта 2011

Простая модификация, которую вы можете сделать, чтобы получить то, что вам нужно, может выглядеть примерно так:

app_prior_app: "required",
app_prior_app_date: {
    required: function() {
        return $("input[name=app_prior_app]:checked").val() === "Yes";
    }
}

Убедитесь, что вы запускаете app_prior_app_date.required() всякий раз, когда меняются радиокнопки app_prior_app, поэтому скрипт может поддерживать правильное состояние независимо от того, что пользователь делает на странице.

1 голос
/ 14 марта 2011

Если бы вы использовали jquery, вы могли бы сделать что-то вроде этого:

var input_radio = $('input[name="app_prior_app"]:checked').val();

, чтобы определить, проверено ли оно и значение.Если input_radio == "yes", то вы, вероятно, .hide() или .show() следующий вопрос

...