Respuestas:
Para obtener el valor del elemento seleccionado radioName
de un formulario con id myForm
:
$('input[name=radioName]:checked', '#myForm').val()
Aquí hay un ejemplo:
$('#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[name=radioName]:checked'
?
Utilizar este..
$("#myform input[type='radio']:checked").val();
$("#myform").find("input[type='radio']:checked").val();
Si ya tiene una referencia a un grupo de botones de radio, por ejemplo:
var myRadio = $("input[name=myRadio]");
Usa la filter()
función, no find()
. ( find()
es para ubicar elementos secundarios / descendientes, mientras que filter()
busca elementos de nivel superior en su selección).
var checkedValue = myRadio.filter(":checked").val();
Notas: Esta respuesta originalmente corrigió otra respuesta que recomendó usar find()
, que parece haber cambiado desde entonces. find()
aún podría ser útil para la situación en la que ya tenía una referencia a un elemento contenedor, pero no a los botones de opción, por ejemplo:
var form = $("#mainForm");
...
var checkedValue = form.find("input[name=myRadio]:checked").val();
Esto debería funcionar:
$("input[name='radioName']:checked").val()
Tenga en cuenta el "" utilizado alrededor de la entrada: marcado y no '' como la solución de Peter J
Puede usar el: selector seleccionado junto con el selector de radio.
$("form:radio:checked").val();
Otra opción es:
$('input[name=radioName]:checked').val()
$("input:radio:checked").val();
Así es como escribiría el formulario y manejaría la obtención de la radio marcada.
Usando un formulario llamado myForm:
<form id='myForm'>
<input type='radio' name='radio1' class='radio1' value='val1' />
<input type='radio' name='radio1' class='radio1' value='val2' />
...
</form>
Obtenga el valor del formulario:
$('#myForm .radio1:checked').val();
Si no está publicando el formulario, lo simplificaría aún más usando:
<input type='radio' class='radio1' value='val1' />
<input type='radio' class='radio1' value='val2' />
Luego, obtener el valor marcado se convierte en:
$('.radio1:checked').val();
Tener un nombre de clase en la entrada me permite diseñar fácilmente las entradas ...
En mi caso, tengo dos botones de radio en una forma y quería saber el estado de cada botón. Esto a continuación funcionó para mí:
// 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>
En un botón de radio generado JSF (usando <h:selectOneRadio>
etiqueta), puede hacer esto:
radiobuttonvalue = jQuery("input[name='form_id\:radiobutton_id']:checked").val();
donde selectOneRadio ID es radiobutton_id y form ID es form_id .
Asegúrese de usar name en lugar de id , como se indica, porque jQuery usa este atributo ( JSF genera automáticamente el nombre que se parece al ID de control).
Escribí un complemento jQuery para configurar y obtener valores de botón de radio. También respeta el evento de "cambio" en ellos.
(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);
Ponga el código en cualquier lugar para habilitar el complemento. Entonces disfruta! Simplemente anula la función val predeterminada sin romper nada.
Puede visitar este jsFiddle para probarlo en acción y ver cómo funciona.
$(".Stat").click(function () {
var rdbVal1 = $("input[name$=S]:checked").val();
}
Esto funciona bien
$('input[type="radio"][class="className"]:checked').val()
El :checked
selector funciona para checkboxes
, radio buttons
y seleccionar elementos. Solo para elementos seleccionados, use el :selected
selector.
Para obtener el valor de la radio seleccionada que usa una clase:
$('.class:checked').val()
Yo uso este simple script
$('input[name="myRadio"]').on('change', function() {
var radioValue = $('input[name="myRadio"]:checked').val();
alert(radioValue);
});
DEMO : https://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>
Si solo tiene 1 conjunto de botones de opción en 1 formulario, el código jQuery es tan simple como esto:
$( "input:checked" ).val()
He lanzado una biblioteca para ayudar con esto. Extrae todos los valores de entrada posibles, en realidad, pero también incluye qué botón de radio se verificó. Puede consultarlo en https://github.com/mazondo/formalizedata
Te dará un objeto js de las respuestas, así que una forma como:
<form>
<input type="radio" name"favorite-color" value="blue" checked> Blue
<input type="radio" name="favorite-color" value="red"> Red
</form>
Te regalaré:
$("form").formalizeData()
{
"favorite-color" : "blue"
}
Para recuperar todos los valores de los botones de radio en la matriz de JavaScript, use el siguiente código jQuery:
var values = jQuery('input:checkbox:checked.group1').map(function () {
return this.value;
}).get();
intentalo-
var radioVal = $("#myform").find("input[type='radio']:checked").val();
console.log(radioVal);
JQuery para obtener todos los botones de opción en el formulario y el valor marcado.
$.each($("input[type='radio']").filter(":checked"), function () {
console.log("Name:" + this.name);
console.log("Value:" + $(this).val());
});
Otra forma de obtenerlo:
$("#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>
$(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();
});
})
});
A partir de esta pregunta , se me ocurrió una forma alternativa de acceder al seleccionado actualmente input
cuando estás dentro de un click
evento para su etiqueta respectiva. La razón es porque el recién seleccionado input
no se actualiza hasta después del label
evento de clic.
TL; DR
$('label').click(function() {
var selected = $('#' + $(this).attr('for')).val();
...
});
Lo que tenía que hacer era simplificar el código C #, es decir, hacer todo lo posible en el front-end JavaScript. Estoy usando un contenedor de conjunto de campos porque estoy trabajando en DNN y tiene su propia forma. Entonces no puedo agregar un formulario.
Necesito probar qué cuadro de texto de 3 se está utilizando y, si es así, ¿cuál es el tipo de búsqueda? Comienza con el valor, Contiene el valor, Coincidencia exacta del valor.
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>
Y mi JavaScript es:
alert($('input[name=partNumber]:checked', '#fsPartNum').val());
if(txtPartNumber.val() !== ''){
message = 'Customer Part Number';
}
else if(txtCommercialPartNumber.val() !== ''){
}
else if(txtDescription.val() !== ''){
}
Solo digo que se puede usar cualquier etiqueta que contenga una ID. Para DNNers, es bueno saberlo. El objetivo final aquí es pasar al código de nivel medio lo que se necesita para comenzar una búsqueda de piezas en SQL Server.
De esta manera, no tengo que copiar el código C # anterior mucho más complicado también. El trabajo pesado se está haciendo aquí mismo.
Tuve que buscar un poco para esto y luego jugar con él para que funcione. Entonces, para otros DNNers, espero que sea fácil de encontrar.