如何禁用无线电组中的一个无线电输入?

时间:2012-03-23 06:13:52

标签: javascript jquery

如何禁用无线电组中的一个无线电输入?

<input type="radio" name="radiogrp" value="op1" checked="checked">Option1
<input type="radio" name="radiogrp" value="op2"> Option2
<input type="radio" name="radiogrp" value="op3" > Option3
<input type="radio" name="radiogrp" value="op4"> Option4

我的问题是我想在点击任何其他按钮后禁用option1

例如:

  

当我选择option2时,应禁用option1

6 个答案:

答案 0 :(得分:5)

选中Fiddle我刚刚添加了

如果这不是您的意图,请告诉我

根据要求 - 发布小提琴答案

$('.rd').click(function(){
    $('.rd[value="op1"]').attr('disabled', 'disabled');       
});​

答案 1 :(得分:1)

$(":radio").change(function(){

    $(":radio[name='radiogrp']").slice(0,1).attr("disabled","disabled");
});

DEMO

答案 2 :(得分:1)

var radios = $('input[type="radio"][name="radiogrp"]');
radios.change(function() {
    if (this.value != "op1") {
        radios.filter('[value="op1"]').prop('disabled', true);
    }
});​

我缓存了单选按钮,所以我不需要两次查询DOM。

DEMO


因为在改变之后,没有办法回来,这是更有趣的方式:

var radios = $('input[type="radio"][name="radiogrp"]');
var first = $('input[type="radio"][name="radiogrp"][value="op1"]');
radios.not(first).change(function() {
    alert('changed'); // getting called only once.
    first.prop('disabled', true);
    radios.unbind('change');
});​

LIVE DEMO

答案 3 :(得分:1)

非常简单,使用jQuery的属性选择器。以下是禁用值为op3

的单选按钮的示例
$('input[value="op3"]').attr('disabled', 'disabled');

Demo


以下是解决方案

var radios =  $('input[name=radiogrp]'); //Cache all the radio button
radios.click(function() { 
//Attach a function to the click event of all radio button

    if(this.value!='op1') { //Check if currently click button has value of op1
        radios.filter('[value="op1"]').prop('disabled', true); //if not disable the first
    }
});

Demo

答案 4 :(得分:1)

尝试

$('input[value="op2"]').click(function(e)
     {
         $('input[value="op1"]').attr('disabled', 'disabled');
     });

http://jsfiddle.net/3CdZU/

答案 5 :(得分:1)

我正在使用具有花哨动态样式的jquery mobile,我发现在执行禁用后,我需要使用checkboxradio(&#34; refresh&#34;)方法调用显式发出刷新,以便样式将反映改变。但是,您可以链接方法调用,因此它可能如下所示:

$('.rd').click(function(){
  $('.rd[value="op1"]').attr('disabled', 'disabled').checkboxradio("refresh");
});​

http://view.jquerymobile.com/1.3.2/dist/demos/faq/updating-the-value-of-enhanced-form-elements-does-not-work.html

虽然我很欣赏gdoron更深入,更技术,更高效,更全面的方法,但我相信有时候(有时候)更容易阅读和更短编码Jibi Abraham的方法是有道理的,特别是一个轻量级的情况。

我意识到这不是一个明确的答案,但我还没有足够的声誉来做评论。