Событие jQuery click на радиокнопке не запускается

У меня есть следующий код для запуска события click на некоторых переключателях! но он не уволен! Кто-нибудь может мне с этим помочь!

КОД:

$("#inline_content input[name='type']").click(function(){
    if($('input:radio[name=type]:checked').val() == "walk_in"){
        $('#select-table > .roomNumber').attr('enabled',false);
    }
}); 

КНОПКИ РАДИО

<form class="type">
<input type="radio" name="type" checked="checked" value="guest">In House</input>
<input type="radio" name="type" value="walk_in">Walk In</input>
</form>.

Обновление

Пробовал onChange() тоже, но не работал.

Ответы

Ответ 1

Он стреляет. Проверьте демонстрацию http://jsfiddle.net/yeyene/kbAk3/

$("#inline_content input[name='type']").click(function(){
    alert('You clicked radio!');
    if($('input:radio[name=type]:checked').val() == "walk_in"){
        alert($('input:radio[name=type]:checked').val());
        //$('#select-table > .roomNumber').attr('enabled',false);
    }
});

Ответ 2

В этом коде есть пара ошибок:

  • Вы используете <input> неправильный путь. Вы должны использовать <label>, если хотите, чтобы текст за ним можно было щелкнуть.
  • Он устанавливает атрибут enabled, которого не существует. Вместо этого используйте disabled.
  • Если это будет атрибут, значение не должно быть false, используйте disabled="disabled" или просто disabled без значения.
  • Если вы хотите, чтобы кто-то нажал на событие формы, которое изменит его значение (например, флажки и радиокнопки), вместо этого используйте .change().

Я не уверен, что должен делать ваш код. Я предполагаю, что вы хотите отключить поле ввода с классом roomNumber после того, как кто-то выберет "Прогулка" (и, возможно, снова включите, когда его не выбрали). Если да, попробуйте этот код:

HTML:

<form class="type">
    <p>
        <input type="radio" name="type" checked="checked" id="guest" value="guest" />
        <label for="guest">In House</label>
    </p>
    <p>
        <input type="radio" name="type" id="walk_in" value="walk_in" />
        <label for="walk_in">Walk in</label>
    </p>
    <p>
        <input type="text" name="roomnumber" class="roomNumber" value="12345" />
    </p>
</form>

JavaScript:

$("form input:radio").change(function () {
    if ($(this).val() == "walk_in") {
        // Disable your roomnumber element here
        $('.roomNumber').attr('disabled', 'disabled');
    } else {
        // Re-enable here I guess
        $('.roomNumber').removeAttr('disabled');
    }
});

Я создал скрипку здесь: http://jsfiddle.net/k28xd/1/

Ответ 3

Другой способ

$("#inline_content input[name='type']").change(function () {
    if ($(this).val() == "walk_in" && $(this).is(":checked")) {
        $('#select-table > .roomNumber').attr('enabled', false);
    }
});

Демо - http://jsfiddle.net/cB6xV/

Ответ 4

Кажется, что вы #inline_content не существует! Удалите jQuery-Selector или проверьте родительские элементы, возможно, у вас есть опечатка или забыли добавить идентификатор.

(сделал вам jsfiddle, работает после добавления родительского <div id="inline_content">: http://jsfiddle.net/J5HdN/)

Ответ 5

поместите ur js-код в форму html или используйте $(document).ready(function() {}) и попробуйте это.

$('#inline_content input[type="radio"]').click(function(){
                if($(this).val() == "walk_in"){
                    alert('ok');
                }
});

Ответ 6

Лично для меня лучшим решением для аналогичной проблемы было:

HTML

<input type="radio" name="selectAll" value="true" />
<input type="radio" name="selectAll" value="false" />

JQuery

var $selectAll = $( "input:radio[name=selectAll]" );
    $selectAll.on( "change", function() {
         console.log( "selectAll: " + $(this).val() );
         // or
         alert( "selectAll: " + $(this).val() );
    });

* Событие "click" может работать вместо "изменения".

Надеюсь, это поможет!