首页 文章

我怎么知道通过jQuery选择了哪个单选按钮?

提问于
浏览
2385

我有两个单选按钮,想要发布所选按钮的值 . 如何通过jQuery获取值?

我可以像这样得到所有这些:

$("form :radio")

我怎么知道哪一个被选中?

30 回答

  • 1

    您可以使用:checked选择器和无线电选择器 .

    $("form:radio:checked").val();
    
  • 21

    另外,检查用户是否没有选择任何内容 .

    var radioanswer = 'none';
    if ($('input[name=myRadio]:checked').val() != null) {           
       radioanswer = $('input[name=myRadio]:checked').val();
    }
    
  • 11

    用这个..

    $("#myform input[type='radio']:checked").val();
    
  • 75

    另一种选择是:

    $('input[name=radioName]:checked').val()
    
  • 23
    $("input:radio:checked").val();
    
  • 14

    您需要使用 :checked 选择器进行访问:

    检查此文档:

    https://api.jquery.com/checked-selector/

    一个例子:

    $('input[name=radioName]:checked', '#myForm').val()
    $('#myForm input').on('change', function() {
    	$('#val').text($('input[name=radioName]:checked', '#myForm').val());
    });
    
    #val {
      color: #EB0054;
      font-size: 1.5em;
    }
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <h3>Radio value: <span id='val'><span></h3>
    <form id="myForm">
      <input type="radio" name="radioName" value="a"> a <br>
      <input type="radio" name="radioName" value="b"> b <br>
      <input type="radio" name="radioName" value="c"> c <br>
    </form>
    
  • 14

    如果您已经有对单选按钮组的引用,例如:

    var myRadio = $("input[name=myRadio]");
    

    使用 filter() 函数,而不是 find() . ( find() 用于查找子/后代元素,而 filter() 搜索选择中的顶级元素 . )

    var checkedValue = myRadio.filter(":checked").val();
    

    注意:这个答案最初正在纠正另一个建议使用 find() 的答案,这似乎已经改变了 . find() 对于你已经有一个容器元素的引用而不是单选按钮的情况仍然有用,例如:

    var form = $("#mainForm");
    ...
    var checkedValue = form.find("input[name=myRadio]:checked").val();
    
  • 0

    我已经发布了一个库来帮助解决这个问题 . 实际上,拉出所有可能的输入值,但也包括检查了哪个单选按钮 . 你可以在https://github.com/mazondo/formalizedata查看

    它会给你一个答案的js对象,所以形式如下:

    <form>
    <input type="radio" name"favorite-color" value="blue" checked> Blue
    <input type="radio" name="favorite-color" value="red"> Red
    </form>
    

    会给你:

    $("form").formalizeData()
    {
      "favorite-color" : "blue"
    }
    
  • 1

    要获取使用类的所选无线电的值:

    $('.class:checked').val()
    
  • 9

    这应该工作:

    $("input[name='radioName']:checked").val()
    

    请注意输入周围的“使用:检查而不是像Peter J的解决方案”

  • 6

    这很好用

    $('input[type="radio"][class="className"]:checked').val()
    

    Working Demo

    :checked 选择器适用于 checkboxesradio buttons 和选择元素 . 仅对于选择元素,请使用 :selected 选择器 .

    API for :checked Selector

  • 274

    我用这个简单的脚本

    $('input[name="myRadio"]').on('change', function() {
      var radioValue = $('input[name="myRadio"]:checked').val();        
      alert(radioValue); 
    });
    
  • 16

    要检索JavaScript数组中的所有单选按钮值,请使用以下jQuery代码:

    var values = jQuery('input:checkbox:checked.group1').map(function () {
        return this.value;
    }).get();
    
  • 15

    用这个:

    value = $('input[name=button-name]:checked').val();
    
  • 378

    试试吧-

    var radioVal = $("#myform").find("input[type='radio']:checked").val();
    
    console.log(radioVal);
    
  • 43
    $(function () {
    // Someone has clicked one of the radio buttons
    var myform= 'form.myform';
    $(myform).click(function () {
        var radValue= "";
        $(this).find('input[type=radio]:checked').each(function () {
            radValue= $(this).val();
        });
      })
    });
    
  • 1

    JSF 生成的单选按钮(使用 <h:selectOneRadio> 标记)中,您可以执行以下操作:

    radiobuttonvalue = jQuery("input[name='form_id\:radiobutton_id']:checked").val();
    

    其中selectOneRadio ID为 radiobutton_id ,表单ID为 form_id .

    请确保使用 name 而不是 id ,因为jQuery使用此属性( name 由JSF自动生成,类似于控件ID) .

  • 11

    如果你在1个表单上只有一组单选按钮,那么jQuery代码就像这样简单:

    $( "input:checked" ).val()
    
  • 47

    获取所有无线电:

    var radios = jQuery("input[type='radio']");
    

    过滤以获得已检查的那个

    radios.filter(":checked")
    
  • 9

    获得它的另一种方法:

    $("#myForm input[type=radio]").on("change",function(){
       if(this.checked) {
        alert(this.value);
        }
      });
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form id="myForm">
       <span><input type="radio" name="q12_3" value="1">1</span><br>
       <span><input type="radio" name="q12_3" value="2">2</span>
    </form>
    
  • 12

    要获取id为 myForm 的表单的 selected radioName 项的值:

    $('input[name=radioName]:checked', '#myForm').val()
    

    这是一个例子:

    $('#myForm input').on('change', function() {
       alert($('input[name=radioName]:checked', '#myForm').val()); 
    });
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form id="myForm">
      <input type="radio" name="radioName" value="1" /> 1 
    <input type="radio" name="radioName" value="2" /> 2
    <input type="radio" name="radioName" value="3" /> 3
    </form>
  • 3623

    DEMOhttps://jsfiddle.net/ipsjolly/xygr065w/

    $(function(){
    	    $("#submit").click(function(){      
    	        alert($('input:radio:checked').val());
    	    });
    	 });
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <table>
           <tr>
             <td>Sales Promotion</td>
             <td><input type="radio" name="q12_3" value="1">1</td>
             <td><input type="radio" name="q12_3" value="2">2</td>
             <td><input type="radio" name="q12_3" value="3">3</td>
             <td><input type="radio" name="q12_3" value="4">4</td>
             <td><input type="radio" name="q12_3" value="5">5</td>
          </tr>
        </table>
    <button id="submit">submit</button>
    
  • 127

    如果你只想要布尔值,即是否检查它,请尝试:

    $("#Myradio").is(":checked")
    
  • 3

    如果你有单个形式的多个单选按钮然后

    var myRadio1 = $('input[name=radioButtonName1]');
    var value1 = myRadio1.filter(':checked').val();
    
    var myRadio2 = $('input[name=radioButtonName2]');
    var value2 = myRadio2.filter(':checked').val();
    

    这对我有用 .

  • 29

    this question开始,当我在 click 事件中为其各自的标签时,我提出了另一种方法来访问当前选择的 input . 原因是因为新选择的 input 直到其 label 的点击事件之后才更新 .

    TL;DR

    $('label').click(function() {
      var selected = $('#' + $(this).attr('for')).val();
    
      ...
    });
    
    $(function() {
      // this outright does not work properly as explained above
      $('#reported label').click(function() {
        var query = $('input[name="filter"]:checked').val();
        var time = (new Date()).toString();
    
        $('.query[data-method="click event"]').html(query + ' at ' + time);
      });
    
      // this works, but fails to update when same label is clicked consecutively
      $('#reported input[name="filter"]').on('change', function() {
        var query = $('input[name="filter"]:checked').val();
        var time = (new Date()).toString();
    
        $('.query[data-method="change event"]').html(query + ' at ' + time);
      });
    
      // here is the solution I came up with
      $('#reported label').click(function() {
        var query = $('#' + $(this).attr('for')).val();
        var time = (new Date()).toString();
    
        $('.query[data-method="click event with this"]').html(query + ' at ' + time);
      });
    });
    
    input[name="filter"] {
      display: none;
    }
    #reported label {
      background-color: #ccc;
      padding: 5px;
      margin: 5px;
      border-radius: 5px;
      cursor: pointer;
    }
    .query {
      padding: 5px;
      margin: 5px;
    }
    .query:before {
      content: "on " attr(data-method)": ";
    }
    [data-method="click event"] {
      color: red;
    }
    [data-method="change event"] {
      color: #cc0;
    }
    [data-method="click event with this"] {
      color: green;
    }
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form id="reported">
      <input type="radio" name="filter" id="question" value="questions" checked="checked">
      <label for="question">Questions</label>
    
      <input type="radio" name="filter" id="answer" value="answers">
      <label for="answer">Answers</label>
    
      <input type="radio" name="filter" id="comment" value="comments">
      <label for="comment">Comments</label>
    
      <input type="radio" name="filter" id="user" value="users">
      <label for="user">Users</label>
    
      <input type="radio" name="filter" id="company" value="companies">
      <label for="company">Companies</label>
    
      <div class="query" data-method="click event"></div>
      <div class="query" data-method="change event"></div>
      <div class="query" data-method="click event with this"></div>
    </form>
    
  • 7

    这是我如何编写表单并处理已检查无线电的获取 .

    使用名为myForm的表单:

    <form id='myForm'>
        <input type='radio' name='radio1' class='radio1' value='val1' />
        <input type='radio' name='radio1' class='radio1' value='val2' />
        ...
    </form>
    

    从表单中获取值:

    $('#myForm .radio1:checked').val();
    

    如果您没有发布表单,我会使用以下内容进一步简化:

    <input type='radio' class='radio1' value='val1' />
    <input type='radio' class='radio1' value='val2' />
    

    然后获取选中的值变为:

    $('.radio1:checked').val();
    

    在输入上有一个类名允许我轻松设置输入样式...

  • 2

    在我的情况下,我有一个表单中的两个单选按钮,我想知道每个按钮的状态 . 以下这个对我有用:

    // get radio buttons value
    console.log( "radio1: " +  $('input[id=radio1]:checked', '#toggle-form').val() );
    console.log( "radio2: " +  $('input[id=radio2]:checked', '#toggle-form').val() );
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form id="toggle-form">
      <div id="radio">
        <input type="radio" id="radio1" name="radio" checked="checked" /><label for="radio1">Plot single</label>
        <input type="radio" id="radio2" name="radio"/><label for="radio2">Plot all</label>
      </div>
    </form>
    
  • 5

    我需要做的是简化C#代码,这在前端JavaScript中尽可能地做 . 我正在使用一个fieldset容器,因为我在DNN工作,它有自己的形式 . 所以我无法添加表格 .

    我需要测试3中哪个文本框正在使用,如果是,搜索的类型是什么?从值开始,包含值,值的完全匹配 .

    HTML:

    <fieldset id="fsPartNum" class="form-inline">
    <div class="form-group">
        <label for="txtPartNumber">Part Number:</label>
        <input type="text" id="txtPartNumber" class="input-margin-pn" />
    </div>
    <div class="form-group">
        <label for="radPNStartsWith">Starts With: </label>
        <input type="radio" id="radPNStartsWith" name="partNumber" checked  value="StartsWith"/>
    </div>
    <div class="form-group">
        <label for="radPNContains">Contains: </label>
        <input type="radio" id="radPNContains" name="partNumber" value="Contains" />
    </div>
    <div class="form-group">
        <label for="radPNExactMatch">Exact Match: </label>
        <input type="radio" id="radPNExactMatch" name="partNumber" value="ExactMatch" />
    </div>
    

    我的JavaScript是:

    alert($('input[name=partNumber]:checked', '#fsPartNum').val()); 
        if(txtPartNumber.val() !== ''){
            message = 'Customer Part Number';
        }
        else if(txtCommercialPartNumber.val() !== ''){
    
        }
        else if(txtDescription.val() !== ''){
    
        }
    

    只是说可以使用任何包含ID的包含标签 . 对于DNNers,这很有用 . 这里的最终目标是将在SQL Server中启动部件搜索所需的内容传递给中级代码 .

    这样我也不必复制更复杂的以前的C#代码 . 繁重的工作正在这里进行 .

    我不得不为此寻找一点,然后修补它以使其工作 . 所以对于其他DNNers,希望这很容易找到 .

  • 4

    我写了一个jQuery插件,用于设置和获取单选按钮值 . 它还尊重他们的“改变”事件 .

    (function ($) {
    
        function changeRadioButton(element, value) {
            var name = $(element).attr("name");
            $("[type=radio][name=" + name + "]:checked").removeAttr("checked");
            $("[type=radio][name=" + name + "][value=" + value + "]").attr("checked", "checked");
            $("[type=radio][name=" + name + "]:checked").change();
        }
    
        function getRadioButton(element) {
            var name = $(element).attr("name");
            return $("[type=radio][name=" + name + "]:checked").attr("value");
        }
    
        var originalVal = $.fn.val;
        $.fn.val = function(value) {
    
            //is it a radio button? treat it differently.
            if($(this).is("[type=radio]")) {
    
                if (typeof value != 'undefined') {
    
                    //setter
                    changeRadioButton(this, value);
                    return $(this);
    
                } else {
    
                    //getter
                    return getRadioButton(this);
    
                }
    
            } else {
    
                //it wasn't a radio button - let's call the default val function.
                if (typeof value != 'undefined') {
                    return originalVal.call(this, value);
                } else {
                    return originalVal.call(this);
                }
    
            }
        };
    })(jQuery);
    

    将代码放在任何地方启用插件 . 然后享受!它只是覆盖默认的val函数而不会破坏任何东西 .

    你可以访问这个jsFiddle来试一试它,看看它是如何工作的 .

    Fiddle

  • 47
    $(".Stat").click(function () {
         var rdbVal1 = $("input[name$=S]:checked").val();
     }
    

相关问题