2013-08-03 4 views
0

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

Мне нужно, чтобы определенные поля стали условно необходимыми на основе ввода из других полей. Например, если человек проверяет «да» в чекбоксе, что у них есть домашние животные, тогда мне понадобится куча других полей, связанных с домашним животным, чтобы они стали необходимыми и, возможно, спрятались. Я хочу сделать это, просто добавив/удалив классы при изменении входных значений.

Флажок на сайте настолько сильно вложен в промежутки из-за плагина, и мне сложно определить, как получить доступ к значению моих ящиков.

jsFiddle если ниже код слишком грязный ->http://jsfiddle.net/ebgranger/cjsg2/3/

HTML

<p>Do you currently have pets? 
     <br /> <span class="wpcf7-form-control-wrap checkbox-243"><span class="wpcf7-form-control wpcf7-checkbox wpcf7-validates-as-required petsCheckBox"><span class="wpcf7-list-item"><input type="checkbox" name="checkbox-243[]" value="Yes" />&nbsp;<span class="wpcf7-list-item-label">Yes</span></span><span class="wpcf7-list-item"><input type="checkbox" name="checkbox-243[]" value="No" />&nbsp;<span class="wpcf7-list-item-label">No</span></span> 
     </span> 
     </span> 
    </p> 

JQuery

$('.checkbox-243 .wpcf7-checkbox .wpcf-list-item input').blur(function() { 
if (this:checkbox:checked = "Yes") { 
    $(this).parents('p').addClass('red'); 
} else if (this:checkbox:checked == "No") { 
    $(this).parents('p').removeClass('red'); 
} 
}); 

Этот код не работает слишком хорошо. У меня есть логика для того, как я хочу, чтобы это работало, но мне нужно больше узнать о синтаксисе jQuery.

ответ

0

У вас неправильный синтаксис для установки флажка.

Используйте find, чтобы получить его первым.

Также проверяется свойство является булево .. Не строка

if ($(this).find('checkbox').is(':checked')) { 
    // Add class 
} else { 
    // remove class 
} 

UPDATE

$('.checkbox-243 .petsCheckBox input[value="Yes"]').change(function() { 
    var $this = $(this); 
    if ($this.is(':checked')) { 
     $this.closest('p').addClass('red'); 
    } else { 
     $this.closest('p').removeClass('red'); 
    } 
}); 

Check Fiddle

+0

Я изменил мой код, но на данный момент не работает. Правильно ли я нацелен на тег абзаца предка? Спасибо за ответ. –

+0

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

+0

. Представленное решение, похоже, не решило проблему в моей js fiddle $ (this) .parents ('р') removeClass ('красный'). В качестве примера я просто пытаюсь изменить цвет фона тега родительского абзаца на самом верху HTML-кода. –

Смежные вопросы