【问题标题】:jquery select only one radio from 6 formsjquery 从 6 个表单中只选择一个收音机
【发布时间】:2012-07-26 15:15:37
【问题描述】:

我有 6 个表单,每个表单有 2 个单选按钮。

我希望用户体验是,他们一次只能选择 1 个单选按钮。因此,当他们遍历另一个表单并检查单选按钮时。所有其他单选按钮将取消选择。

这是我目前尝试的。

$(document).ready(function () {                 
  $('input[type=radio]').prop('checked', false);

  $('input[type=radio]').each(function (i) {                        
    $(this).not($('radio:checked')).prop('checked', false);                     
  });                   
});

我的想法是在开始时取消选择所有按钮。但在那之后我对我的逻辑感到困惑。

我想说

如果选中此收音机,请取消选中所有其他收音机。

虽然在英语中它适合一个句子,但我怎样才能将它放入 jquery 中?

【问题讨论】:

  • @Musa - 不能跨表单工作!

标签: javascript jquery html forms radio-button


【解决方案1】:
$('input[type=radio]').on('change', function(){
    $('input[type=radio]').not(this).prop('checked', false);
});

FIDDLE

【讨论】:

  • +1 这是正确的。只是想知道如果用户改变主意并想选择另一个收音机会怎么做? :)
  • 这很好,如果用户选择了一个按钮并改变了主意,那么他们仍然可以选择另一个按钮。表单在同一页面上,但每组按钮都提交到特定的贝宝表单
【解决方案2】:

基本上你不能“取消点击”单选按钮 - 所以你所要做的就是在“点击”事件上,取消选择所有单选元素并选择被点击的那个。

$('input[type=radio]').on('click',function(e){
   $('input[type=radio]').prop('checked','');
   $(this).prop('checked','checked');
   e.preventDefault();
});

jsFiddle

【讨论】:

    【解决方案3】:

    试试这个(见演示:http://jsfiddle.net/3xD7V/1/):

    $(document).ready(function () {
      $('input[type=radio]').prop('checked', false);
      $('input[type=radio]:first').prop('checked', true)
    
      $('input[type=radio]').click(function (event) {
        $('input[type=radio]').prop('checked', false);
        $(this).prop('checked', true);
    
        event.preventDefault();
      });
    });
    

    【讨论】:

      猜你喜欢
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 2017-07-22
      • 1970-01-01
      • 2012-03-13
      • 2012-11-13
      相关资源
      最近更新 更多