Проверьте значение отмеченного флажка из группы флажков, используя jQuery

0

У меня есть группа флажков:

<input type="checkbox" value="v1" name="q_119[]">
<input type="checkbox" value="v2" name="q_119[]">
<input type="checkbox" value="v3" name="q_119[]">
<input type="checkbox" value="v4" name="q_119[]">

И я хочу проверить, был ли установлен один конкретный флажок (скажем, тот, у которого value="v4" и если да, добавьте класс css в другой элемент на странице.

Я попытался использовать этот код:

$('input[name="119[]"]').click(function(){
    if ($('input[value="v1"]:checked'))
    {
        {
            $('#qu_120').removeClass('hide');
        } 
        else
        {
            $('#qu_120').addClass('hide');
        } 
    }
});

Но класс не применяется, когда флажок установлен. Вот jsFiddle моих усилий

  • 0
    Укороченная версия: jsfiddle.net/Gjyb7
Теги:
checkbox

3 ответа

3
Лучший ответ

Вы просто ошиблись в своем selector. Проверьте имя.

Пытаться,

$('input[name="q_119[]"]').click(function(){
    if ($('input[value="v1"]').is(':checked'))
    {
       $('#qu_120').removeClass('hide');
    } 
    else
    {
       $('#qu_120').addClass('hide');
    } 
});

DEMO

  • 0
    о боже мой, я смотрю на это целую вечность - я не могу поверить, что это был селектор с ошибкой. Я идиот. Спасибо
  • 0
    Его сработало, а у тебя нет из-за лишних скобок. Ваше утверждение «else» теперь вызывало ошибку, потому что не было соответствующего «if». Только Javascript не знает / не заботится об этом и пытается выполнить соответственно, но терпит неудачу.
Показать ещё 1 комментарий
1

У вас есть четыре проблемы, препятствующие этому:

$('input[name="119[]"]').click(function(){ // name attr is incorrect, should be "q_119[]"
    if ($('input[value="v1"]:checked')) // returns an object, so it will always be true
    { // <- unexpected curly brace
        {
            $('#qu_120').removeClass('hide');
        } 
        else
        {
            $('#qu_120').addClass('hide');
        } 
    } // <- unexpected curly brace
});

Фиксация этих...

$('input[name="q_119[]"]').click(function () { // name attr is now correct
    if ($('input[value="v1"]:checked').length) { // length is an integer which returns 0 if the selector cannot find the element
        $('#qu_120').removeClass('hide');
    } else {
        $('#qu_120').addClass('hide');
    }
});

и ваш код работает нормально: http://jsfiddle.net/fXKFp/8/

1

Пытаться:

$('input[name="q_119[]"]').change(function(){
    if ($('input[value="v1"]').prop('checked')){
            $('#qu_120').removeClass('hide');
    } 
    else{
        $('#qu_120').addClass('hide');
    }
});

ДЕМО здесь.

  • 0
    Кажется, это не работает в моей скрипке? jsfiddle.net/fXKFp/3
  • 1
    @Gideon, потому что селектор должен быть $('input[name="q_119[]"]').click() .
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню