21

我有以下代码来触发一些单选按钮上的点击事件!但它不会被解雇!谁能帮我这个!

代码 :

$("#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()了,但没有用。

4

6 回答 6

36

它着火了。检查演示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);
    }
});
于 2013-06-19T08:25:08.600 回答
18

这段代码有几处错误:

  1. 你用<input>错了方法。<label>如果你想让它后面的文本可点击,你应该使用。
  2. 它正在设置enabled不存在的属性。改为使用disabled
  3. 如果它是一个属性,它的值不应该是false、使用disabled="disabled"或根本disabled没有值。
  4. 如果检查是否有人点击了会更改其值的表单事件(如复选框和单选按钮),请.change()改用。

我不确定你的代码应该做什么。roomNumber我的猜测是,一旦有人选择“Walk in”(并且可能在取消选择时重新启用),您就想禁用带有类的输入字段。如果是这样,请尝试以下代码:

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/

于 2013-06-19T08:46:24.263 回答
5

就我个人而言,类似问题的最佳解决方案是:

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”也可以代替“change”。

希望这可以帮助!

于 2015-05-15T15:11:18.857 回答
1

不一样的方式

$("#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/

于 2013-06-19T08:24:30.837 回答
0

好像你#inline_content不在!删除 jQuery-Selector 或检查父元素,也许你有错字或忘记添加 id。

(让你成为一个 jsfiddle,在添加父级后工作:http <div id="inline_content">: //jsfiddle.net/J5HdN/

于 2013-06-19T08:29:45.600 回答
0

将您的 js 代码放在 html 表单下或使用 $(document).ready(function(){}) 并试试这个。

$('#inline_content input[type="radio"]').click(function(){
                if($(this).val() == "walk_in"){
                    alert('ok');
                }
});
于 2013-06-19T08:34:41.640 回答