如何找出用户在 Javascript 中选择了哪个单选按钮?

Posted

技术标签:

【中文标题】如何找出用户在 Javascript 中选择了哪个单选按钮?【英文标题】:How to find out which radio button the user selected in Javascript? 【发布时间】:2016-06-15 22:50:49 【问题描述】:

我有一个看起来像这样的表单

现在,我遇到的问题是用户可以选择多个单选按钮。他们应该只能选择 1。 我有一个 javascript 函数,它将遍历所有行并禁用未选中的按钮,如此处所示。

function disableNonSelectedRadioButtons(selectedRadioButton) 
    $('#payer-contract-global-table .clone-target').each(function (i)  
        var radioName = 'radio' + '-c' + i;
        if (selectedRadioButton != radioName)
            $('#' + radioName).prop("checked", false);
    );

这行得通。但是我需要将正确的selectedRadioButton 发送到这个函数。我怎样才能在 Javascript 中正确地做到这一点?

目前 HAML 如下所示:

   %input.radio-button:name => "radio-c#index", :type => "radio", :id => "radio-c#index", :checked => "true"

是否有某种类型的 Javascript 代码我可以这样做 如果我单击 radio-c2 的按钮,它会将其发送到我的函数?

【问题讨论】:

为什么不能使用普通的 html 和give your radio buttons the same name? @Mdjon26 不清楚你的要求,更准确地澄清你的问题。 因为从您的帖子看来,您只想要一次只能选择一个收音机的功能,而不是您不需要 javascript。只需提到@SébastienVercammen。如果这不是您想要的,请详细说明。 【参考方案1】:

如果你想使用 jQuery:

  $('input[type="radio"]').click(function(e)
       var selectedRadioName = $(this).attr('name');
       disableNonSelectedRadioButtons(selectedRadioName);
  );

如果您要动态创建元素,请使用事件委托:https://learn.jquery.com/events/event-delegation/

 $(document).on('click', 'input[type="radio"]', function(e)
       var selectedRadioName = $(this).attr('name');
       disableNonSelectedRadioButtons(selectedRadioName);
 );

也就是说,您可以只使用 HTML:

<input type="radio" name="giveThemAllTheSameName" />

通过为单选按钮指定相同的名称,您将只能选择一个。

【讨论】:

JQuery 在控制台中工作,但在我的应用程序中不起作用。这是为什么?我是否需要以某种方式激活它? 确保在上述代码之前有 jQuery 源代码(或 CDN:"ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js") 脚本标签。您还需要延迟执行直到 DOM 加载。即:$(document ).ready(function() //以上代码 );【参考方案2】:

如果你遇到事件没有被触发,这是因为DOM元素是动态生成的(我认为......)我这样解决:

$(document).on('click', 'input[type="radio"]', function(e)
   var selectedRadioName = $(this).attr('name');
   disableNonSelectedRadioButtons(selectedRadioName);
);

以防万一。

【讨论】:

【参考方案3】:

您可以使用prop()

$('input[type="radio"]').click(disableNonSelectedRadioButtons($(this).prop('name')));

【讨论】:

不要将 Javascript 用于 HTML 的工作。 这个问题是专门针对 Javascript 提出的。

以上是关于如何找出用户在 Javascript 中选择了哪个单选按钮?的主要内容,如果未能解决你的问题,请参考以下文章

找出在 UIActivityViewController 中单击了哪个图标

Selenium - CSS选择器:如何在每个项目的长项列表中找出哪个颜色是选择器?

如何确定在 iOS 中点击了哪个视图?

如何找出使用 javascript/jquery 调用函数的次数?

如何找出用户来自哪个URL

我应该如何检测文本文件中使用了哪个分隔符?