jQuery отключить дочерние узлы - PullRequest
3 голосов
/ 04 января 2012

Я пытаюсь отключить каждое поле ввода в определенной части веб-формы всякий раз, когда для радиокнопки установлена ​​опция «Нет» (и возвращаю ее, когда выбрано «Да», но не работает должным образом. В настоящее время у меня есть этот код для «просмотра» переключателей и включения / отключения по мере необходимости:

jQuery("#ReportOn").change(function () {
    if(jQuery("#ReportOff").is(":checked")) {
        // Everything working up until here , but below command does nothing.
        jQuery("#reportform > input").attr("disabled", true);
    } else if(jQuery("#ReportOn").is(":checked")) {
        jQuery("#reportform > input").removeAttr("disabled");
    }
});

Форма выглядит так:

<form method="post" action="post.php">
    <input type="radio" name="report" id="ReportOn" value="1" /><label for="ReportOn">Yes</label>
    <input type="radio" name="report" id="ReportOff" value="0" /><label for="ReportOff">No</label>
    <div id="reportform">
        <input type="text" name="title" id="ReportTitle" />
        <input type="text" name="subtitle" id="ReportSubtitle" />
    </div>
</form>

Когда радиокнопка «Отчетность» установлена ​​на «Нет», остальная часть формы должна быть отключена.

Что мне здесь не хватает, что мешает ему работать?

Ответы [ 4 ]

2 голосов
/ 04 января 2012

Вот еще одно решение для той же задачи;

$('input[name="report"]').change(function(){
    var disabled = ($(this).val() !== "1");
    $('#reportform input').attr("disabled", disabled); 
});
1 голос
/ 04 января 2012

Попробуйте изменить:

jQuery("#reportform > input")

до:

jQuery("#reportform input")
0 голосов
/ 04 января 2012

Кажется, ваш скрипт работает.

Обязательно поставьте его после , когда два элемента DOM объявлены в HTML (ReportOn, ReportOff).Сценарий не знает об их существовании.

Это будет работать:

<div id="something"></div>
<script>$("#something").text('hello');</script>

Этот не будет:

<script>$("#something").text('hello');</script>
<div id="something"></div>

Чтобы избежать подобных проблем, выследует запустить скрипт после полной загрузки документа - метод document.ready ().

0 голосов
/ 04 января 2012

Может быть, вы получили какую-то ошибку, например, две формы с одинаковым идентификатором? Потому что это работает для меня, посмотрите это: http://jsfiddle.net/JqqGb/

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