我怎么知道哪个单选button是通过jQueryselect的?

我有两个单选button,并希望发布所选的一个值。 我怎样才能得到与jQuery的价值?

我可以像这样得到他们所有的人:

$("form :radio") 

我如何知道select哪一个?

获取id为myForm的表单的选定 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 <br /> <input type="radio" name="radioName" value="2" /> 2 <br /> <input type="radio" name="radioName" value="3" /> 3 <br /> </form> 

用这个..

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

如果您已经有一个单选button组的引用,例如:

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

使用filter()函数,而不是find() 。 ( find()用于定位子/后代元素,而filter()searchselect中的顶级元素。)

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

注意:这个答案最初是修正了推荐使用find()另一个答案,这个答案似乎已经被改变了。 find()对于已经有一个容器元素引用的情况,但对于单选button来说仍然有用,例如:

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

这应该工作:

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

注意“”在input周围的使用:检查,而不是“像彼得J的解决scheme

您可以使用:选中的select器和无线电select器。

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

获取所有收音机:

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

筛选以获得检查的那个

 radios.filter(":checked") 

如果你只想布尔值,也就是说,如果它被检查或不试试这个:

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

另一个select是:

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

以下是我如何写表格并处理收到的收音机。

使用名为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(); 

在input上有一个类名可以让我轻松地设置input风格

JSF生成的单选button中(使用<h:selectOneRadio>标签),可以这样做:

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

selectOneRadio ID是radiobutton_id ,表单ID是form_id

因为jQuery使用了这个属性( 名称是由类似于控件ID的JSF自动生成的),所以一定要使用name来代替id

另外,检查用户是否没有select任何东西。

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

如果你有一个单一的forms然后多个单选button

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

这是为我工作。

在我的情况下,我有一个forms的两个单选button,我想知道每个button的状态。 这下面为我工作:

HTML端:

 <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> 

Javascript方面:

 // get radio buttons value console.log( "radio1: " + $('input[id=radio1]:checked', '#toggle-form').val() ); console.log( "radio2: " + $('input[id=radio2]:checked', '#toggle-form').val() ); 

我写了一个jQuery插件来设置和获取单选button值。 它也尊重他们的“变化​​”事件。

 (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来尝试一下,看看它是如何工作的。

小提琴

这工作正常

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

工作演示

:checkedselect器适用于checkboxesradio buttons和select元素。 对于仅select元素,请使用:selectedselect器。

API :checked Selector

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

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

我使用这个简单的脚本

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

用这个:

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

如果您只有一组单选button,那么jQuery代码就像这样简单:

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

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

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

 <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" } 

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

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

从这个问题 ,我想出了一种替代方式来访问当前选定的input当你在其各自的标签click事件。 原因是因为新select的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> 
 $(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(); }); }) }); 

尝试一下-

 var radioVal = $("#myform").find("input[type='radio']:checked").val(); console.log(radioVal); 

演示 : https : //jsfiddle.net/ipsjolly/xygr065w/

HTML

 <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> 

提交

JQuery的

 $(function(){ $("#submit").click(function(){ alert($('input:radio:checked').val()); }); }); 

我需要做的是简化C#代码,这是尽可能在前端JavaScript。 我正在使用fieldset容器,因为我在DNN中工作,它有自己的forms。 所以我不能添加表单。

我需要testing3个文本框中哪一个正在被使用,如果是,那么search的types是什么? 以值开始,包含值的精确匹配。

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() !== ''){ } 

只要说任何含有标签的标签都可以使用。 对于DNNers,这是很好的知道。 这里的最终目标是向中级代码传递在SQL Server中启动零件search所需的内容。

这样我就不必复制更复杂的以前的C#代码。 繁重的工作正在这里完成。

我不得不寻找一点这个,然后修补它,让它的工作。 所以对于其他的DNN,希望这很容易find。

另一种方法来获得它:

  $("#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>