如何找出用户在Javascript中选择的单选按钮?

如何找出用户在Javascript中选择的单选按钮?,javascript,jquery,html,haml,Javascript,Jquery,Html,Haml,我有一张像这样的表格 现在,我遇到的问题是,用户可以选择多个单选按钮。他们应该只能选择1。 我有一个Javascript函数,它将遍历所有行,并禁用此处未选中的按钮 function disableNonSelectedRadioButtons(selectedRadioButton) { $('#payer-contract-global-table .clone-target').each(function (i) { var radioName = 'radio

我有一张像这样的表格

现在,我遇到的问题是,用户可以选择多个单选按钮。他们应该只能选择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"}
$(document).on('click', 'input[type="radio"]', function(e){
   var selectedRadioName = $(this).attr('name');
   disableNonSelectedRadioButtons(selectedRadioName);
});
Javascript中是否有某种类型的代码可以这样做 如果我单击radio-c2的按钮,它将发送到我的函数?

您可以使用


如果要使用jQuery:

  $('input[type="radio"]').click(function(e){
       var selectedRadioName = $(this).attr('name');
       disableNonSelectedRadioButtons(selectedRadioName);
  });
如果要动态创建元素,请使用事件委派:

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

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


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

如果您遇到事件未被触发,则会发生这种情况,因为DOM元素是动态生成的(我认为…),我这样解决它:

   %input.radio-button{:name => "radio-c#{index}", :type => "radio", :id => "radio-c#{index}", :checked => "true"}
$(document).on('click', 'input[type="radio"]', function(e){
   var selectedRadioName = $(this).attr('name');
   disableNonSelectedRadioButtons(selectedRadioName);
});

以防万一。

为什么不能使用常规HTML和?@Mdjon26不清楚您的要求是什么,请更准确地澄清您的问题。因为从您的帖子中,您似乎只需要一个功能,一次只能选择一个收音机,而不需要javascript。只要做上面提到的@SébastienVercammen就行了。如果这不是您想要的,请详细说明。不要将Javascript用于HTML的工作。但这个问题是专门针对Javascript提出的。JQuery在控制台中工作,但在我的应用程序中不工作。为什么呢?我是否需要以某种方式激活它?请确保在上述代码之前有jQuery源代码(或CDN:)脚本标记。您还需要延迟执行,直到DOM加载。即:$(document).ready(function(){//over code});