我怎么知道哪个单选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()
工作演示
:checked
select器适用于checkboxes
, radio buttons
和select元素。 对于仅select元素,请使用:selected
select器。
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>