How can I know which radio button is selected via jQuery?
我有两个单选按钮,希望发布所选按钮的值。如何使用jquery获取值?
我可以像这样得到它们:
1 | $("form :radio") |
我如何知道选择哪一个?
要获取ID为
1 | $('input[name=radioName]:checked', '#myForm').val() |
下面是一个例子:
1 2 3 | $('#myForm input').on('change', function() { alert($('input[name=radioName]:checked', '#myForm').val()); }); |
1 2 3 4 5 6 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> <form id="myForm"> <input type="radio" name="radioName" value="1" /> 1 <br /> <input type="radio" name="radioName" value="2" /> 2 <br /> <input type="radio" name="radioName" value="3" /> 3 <br /> </form> |
用这个…
1 | $("#myform input[type='radio']:checked").val(); |
如果您已经有了对单选按钮组的引用,例如:
1 | var myRadio = $("input[name=myRadio]"); |
使用
1 | var checkedValue = myRadio.filter(":checked").val(); |
注:此答案最初是更正另一个建议使用
1 2 3 | var form = $("#mainForm"); ... var checkedValue = form.find("input[name=myRadio]:checked").val(); |
这应该有效:
1 | $("input[name='radioName']:checked").val() |
注意"在输入周围使用:检查而不是",就像Peter J的解决方案一样。
您可以将:选中的选择器与收音机选择器一起使用。
1 | $("form:radio:checked").val(); |
如果只需要布尔值,即如果选中或不选中,请尝试以下操作:
1 | $("#Myradio").is(":checked") |
得到所有的收音机:
1 | var radios = jQuery("input[type='radio']"); |
筛选以获取已检查的
1 | radios.filter(":checked") |
另一个选择是:
1 | $('input[name=radioName]:checked').val() |
1 | $("input:radio:checked").val(); |
以下是我如何填写表格和处理检查过的收音机的获取。
使用名为MyForm的表单:
1 2 3 4 5 | <form id='myForm'> <input type='radio' name='radio1' class='radio1' value='val1' /> <input type='radio' name='radio1' class='radio1' value='val2' /> ... </form> |
从表单中获取值:
1 | $('#myForm .radio1:checked').val(); |
如果您不发布表单,我将使用以下方法进一步简化它:
1 2 | <input type='radio' class='radio1' value='val1' /> <input type='radio' class='radio1' value='val2' /> |
然后,获取选中的值变为:
1 | $('.radio1:checked').val(); |
在输入上有一个类名允许我轻松地设置输入样式…
在我的例子中,我在一个表单中有两个单选按钮,我想知道每个按钮的状态。以下内容对我很有用:
1 2 3 | // get radio buttons value console.log("radio1:" + $('input[id=radio1]:checked', '#toggle-form').val() ); console.log("radio2:" + $('input[id=radio2]:checked', '#toggle-form').val() ); |
1 2 3 4 5 6 7 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> <form id="toggle-form"> <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> </form> |
在JSF生成的单选按钮(使用
1 | radiobuttonvalue = jQuery("input[name='form_id\:radiobutton_id']:checked").val(); |
其中selectoneradio id是radiobutton_id,form id是form_id。
如图所示,请务必使用name而不是id,因为jquery使用此属性(名称由类似于control id的JSF自动生成)。
我编写了一个jquery插件,用于设置和获取单选按钮值。它也尊重他们身上的"改变"事件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | (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来尝试它的实际操作,并了解它是如何工作的。
小提琴
如果您有多个单一窗体的单选按钮,则
1 2 3 4 5 | var myRadio1 = $('input[name=radioButtonName1]'); var value1 = myRadio1.filter(':checked').val(); var myRadio2 = $('input[name=radioButtonName2]'); var value2 = myRadio2.filter(':checked').val(); |
这对我有用。
另外,检查用户是否没有选择任何内容。
1 2 3 4 | var radioanswer = 'none'; if ($('input[name=myRadio]:checked').val() != null) { radioanswer = $('input[name=myRadio]:checked').val(); } |
这很好
1 | $('input[type="radio"][class="className"]:checked').val() |
工作演示
1 2 3 | $(".Stat").click(function () { var rdbVal1 = $("input[name$=S]:checked").val(); } |
要获取使用类的选定收音机的值,请执行以下操作:
1 | $('.class:checked').val() |
使用此:
1 | value = $('input[name=button-name]:checked').val(); |
我用这个简单的脚本
1 2 3 4 | $('input[name="myRadio"]').on('change', function() { var radioValue = $('input[name="myRadio"]:checked').val(); alert(radioValue); }); |
演示:https://jsfiddle.net/ipsjolly/xygr065w/
1 2 3 4 5 | $(function(){ $("#submit").click(function(){ alert($('input:radio:checked').val()); }); }); |
1 2 3 4 5 6 7 8 9 10 11 12 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> <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> |
如果一个表单上只有一组单选按钮,jquery代码就这么简单:
1 | $("input:checked" ).val() |
我已经发布了一个库来帮助解决这个问题。实际上,拉取所有可能的输入值,但也包括选中的单选按钮。你可以在https://github.com/mazondo/formezedata上查看。
它会给你一个JS对象的答案,这样一个表单:
1 2 3 4 | <form> <input type="radio" name"favorite-color" value="blue" checked> Blue <input type="radio" name="favorite-color" value="red"> Red </form> |
会给你:
1 2 3 4 | $("form").formalizeData() { "favorite-color" :"blue" } |
要检索javascript数组中的所有单选按钮值,请使用以下jquery代码:
1 2 3 | var values = jQuery('input:checkbox:checked.group1').map(function () { return this.value; }).get(); |
试试看——
1 2 3 | var radioVal = $("#myform").find("input[type='radio']:checked").val(); console.log(radioVal); |
另一种方法是:
1 2 3 4 5 | $("#myForm input[type=radio]").on("change",function(){ if(this.checked) { alert(this.value); } }); |
1 2 3 4 5 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> <form id="myForm"> <span><input type="radio" name="q12_3" value="1">1</span> <span><input type="radio" name="q12_3" value="2">2</span> </form> |
在这个问题上,我想出了一个替代方法,当您在
DR
1 2 3 4 5 | $('label').click(function() { var selected = $('#' + $(this).attr('for')).val(); ... }); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | $(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); }); }); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> <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> </form> |
1 2 3 4 5 6 7 8 9 10 | $(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(); }); }) }); |
我需要做的是简化C代码,也就是尽可能在前端JavaScript中完成。我使用的是fieldset容器,因为我在dnn中工作,它有自己的形式。所以我不能添加表单。
我需要测试3个文本框中的哪个文本框正在使用,如果是,搜索类型是什么?从值开始,包含值,与值完全匹配。
HTML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <fieldset id="fsPartNum" class="form-inline"> <label for="txtPartNumber">Part Number:</label> <input type="text" id="txtPartNumber" class="input-margin-pn" /> <label for="radPNStartsWith">Starts With: </label> <input type="radio" id="radPNStartsWith" name="partNumber" checked value="StartsWith"/> <label for="radPNContains">Contains: </label> <input type="radio" id="radPNContains" name="partNumber" value="Contains" /> <label for="radPNExactMatch">Exact Match: </label> <input type="radio" id="radPNExactMatch" name="partNumber" value="ExactMatch" /> |
我的javascript是:
1 2 3 4 5 6 7 8 9 10 | alert($('input[name=partNumber]:checked', '#fsPartNum').val()); if(txtPartNumber.val() !== ''){ message = 'Customer Part Number'; } else if(txtCommercialPartNumber.val() !== ''){ } else if(txtDescription.val() !== ''){ } |
只需说任何包含ID的标记都可以使用。对于dnner来说,这是很好的了解。这里的最终目标是将在SQL Server中启动部件搜索所需的代码传递给中级代码。
这样我就不必再复制更复杂的C代码了。这里正在进行重物提升。
我得找一点这个,然后修补它,使它工作。所以对于其他dnner,希望这很容易找到。
jquery获取表单中的所有单选按钮和选中的值。
1 2 3 4 | $.each($("input[type='radio']").filter(":checked"), function () { console.log("Name:" + this.name); console.log("Value:" + $(this).val()); }); |
这个怎么样?
使用更改并获取无线电类型的值是选中的…
1 2 3 | $('#my-radio-form').on('change', function() { console.log($('[type="radio"]:checked').val()); }); |
1 2 3 4 5 6 7 | <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"> <form id="my-radio-form"> <input type="radio" name="input-radio" value="a" />a <input type="radio" name="input-radio" value="b" />b <input type="radio" name="input-radio" value="c" />c <input type="radio" name="input-radio" value="d" />d </form> |
您需要使用
- https://api.jquery.com/checked-selector/
一个例子:
1 2 3 4 | $('input[name=radioName]:checked', '#myForm').val() $('#myForm input').on('change', function() { $('#val').text($('input[name=radioName]:checked', '#myForm').val()); }); |
1 2 3 4 | #val { color: #EB0054; font-size: 1.5em; } |
1 2 3 4 5 6 7 8 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> Radio value: <span id='val'><span> <form id="myForm"> <input type="radio" name="radioName" value="a"> a <input type="radio" name="radioName" value="b"> b <input type="radio" name="radioName" value="c"> c </form> |
可以调用函数onchange()。
1 2 3 4 5 6 7 8 | <input type="radio" name="radioName" value="1" onchange="radio_changed($(this).val())" /> 1 <br /> <input type="radio" name="radioName" value="2" onchange="radio_changed($(this).val())" /> 2 <br /> <input type="radio" name="radioName" value="3" onchange="radio_changed($(this).val())" /> 3 <br /> function radio_changed(val){ alert(val); } |