在输入无线电更改时禁用部分中的所有元素

时间:2014-05-26 07:19:27

标签: javascript jquery html twitter-bootstrap

我有两个部分的问题,我希望在启用另一部分时禁用每个部分。他们之间的一种切换。 例如,如果选择第一部分的无线电,则禁用第二部分的所有元素(:输入),反之亦然。

我已经创建了这个但是并没有真正起作用,因为元素变量没有以正确的方式定位,就像(this)。

var variab = ('.radio-input');
$('.form-horizontal').on('change', variab, function() {

    var element = $('.well :input').not('.radio-input');
    var el = $(this).closest('.radioOption').find(element);

    element.prop('disabled', function() { 
        return !el.is(this);
    })
});


FIDDLE

2 个答案:

答案 0 :(得分:1)

试试这个。

首先为class="radio-input"的所有单选按钮指定相同名称,以便一次只能选择一个单选按钮。让我们说name="radio-input"如下:

<input type="radio" class="radio-input" name="radio-input"/>

然后使用这个jQuery:

var variab = ('.radio-input');
    $('.form-horizontal').on('change', variab, function() {
    // disable all input under .well div except radio button
    $(this).parents('.well').siblings().find(':input').not('.radio-input').prop('disabled', true);
     // enable all input under .well div for current radio button selected.
        $(this).parents('.well').find(':input').prop('disabled', false);

    });

工作JSFiddle

答案 1 :(得分:1)

您可以使用此代码执行此操作,您需要为您的电台选项指定相同的名称

(function(){
  $(".radio-input").on("change", function() {
      var clicked = $(this).closest(".well")
      var other = $(".well").not(clicked);
      clicked.find("input[type='text']").prop("disabled", false); 
      other.find("input[type='text']").prop("disabled", true);

  })
}());

一个工作示例here