Comment puis-je savoir quel bouton radio est sélectionné via jQuery?
j'ai deux boutons radio et voulez afficher la valeur de celle sélectionnée. Comment puis-je obtenir la valeur avec jQuery?
je peux obtenir tout d'eux comme ceci:
$("form :radio")
Comment savoir laquelle est sélectionnée?
30 réponses
pour obtenir la valeur du sélectionné radioName
élément d'un formulaire avec id myForm
:
$('input[name=radioName]:checked', '#myForm').val()
voici un exemple:
$('#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>
utilisez ceci..
$("#myform input[type='radio']:checked").val();
Si vous avez déjà une référence à un groupe de boutons radio, par exemple:
var myRadio = $("input[name=myRadio]");
utiliser la fonction filter()
et non find()
. ( find()
est pour localiser les éléments enfant/descendant, tandis que filter()
recherche les éléments de haut niveau dans votre sélection.)
var checkedValue = myRadio.filter(":checked").val();
Notes: cette réponse corrigeait à l'origine une autre réponse qui recommandait d'utiliser find()
, qui semble avoir changé depuis. find()
pourrait encore être utile dans le cas où vous aviez déjà une référence à un élément de conteneur, mais pas aux boutons radio, par exemple:
var form = $("#mainForm");
...
var checkedValue = form.find("input[name=myRadio]:checked").val();
cela devrait fonctionner:
$("input[name='radioName']:checked").val()
Note "" usaged autour de l'entrée:vérifié et pas " comme la Pierre J solution
vous pouvez utiliser le sélecteur :coché avec le sélecteur radio.
$("form:radio:checked").val();
si vous voulez juste la valeur booléenne, i.e. si elle est cochée ou non essayez ceci:
$("#Myradio").is(":checked")
Obtenir toutes les radios:
var radios = jQuery("input[type='radio']");
filtre pour obtenir celui qui est vérifié
radios.filter(":checked")
une autre option est:
$('input[name=radioName]:checked').val()
Voici comment je vais écrire le formulaire et gérer l'obtention de la radio contrôlée.
utilisant un formulaire appelé myForm:
<form id='myForm'>
<input type='radio' name='radio1' class='radio1' value='val1' />
<input type='radio' name='radio1' class='radio1' value='val2' />
...
</form>
Obtenir la valeur de la forme:
$('#myForm .radio1:checked').val();
si vous n'affichez pas le formulaire, je le simplifierais davantage en utilisant:
<input type='radio' class='radio1' value='val1' />
<input type='radio' class='radio1' value='val2' />
alors obtenir la valeur contrôlée devient:
$('.radio1:checked').val();
Avoir un nom de classe sur l'entrée me permet facilement le style des entrées...
Dans mon cas, j'ai deux boutons radio dans un formulaire et je voulais connaître l'état de chaque bouton. Ceci ci-dessous a fonctionné pour moi:
// 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>
dans un JSF bouton radio généré (en utilisant <h:selectOneRadio>
étiquette), vous pouvez faire ceci:
radiobuttonvalue = jQuery("input[name='form_id\:radiobutton_id']:checked").val();
où l'ID selectOneRadio est radiobutton_id et l'ID du formulaire est form_id .
assurez - vous d'utiliser name au lieu de id , comme indiqué, car jQuery utilise cet attribut ( name est généré automatiquement par JSF ressemblant à control ID).
j'ai écrit un plugin jQuery pour définir et obtenir des valeurs de boutons radio. Il respecte également l'événement "change" sur eux.
(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);
mettez le code n'importe où pour activer l'addin. Alors profitez-en! Il remplace simplement la fonction val par défaut sans rien casser.
vous pouvez visiter ce jsFiddle pour l'essayer en action, et voir comment cela fonctionne.
vérifiez également si l'utilisateur ne sélectionne rien.
var radioanswer = 'none';
if ($('input[name=myRadio]:checked').val() != null) {
radioanswer = $('input[name=myRadio]:checked').val();
}
si vous avez plusieurs boutons radio sous une seule forme alors
var myRadio1 = $('input[name=radioButtonName1]');
var value1 = myRadio1.filter(':checked').val();
var myRadio2 = $('input[name=radioButtonName2]');
var value2 = myRadio2.filter(':checked').val();
ça marche pour moi.
Cela fonctionne bien
$('input[type="radio"][class="className"]:checked').val()
le sélecteur :checked
fonctionne pour checkboxes
, radio buttons
, et sélectionnez des éléments. Pour sélectionner des éléments seulement, utilisez le sélecteur :selected
.
$(".Stat").click(function () {
var rdbVal1 = $("input[name$=S]:checked").val();
}
pour obtenir la valeur de la radio sélectionnée qui utilise une classe:
$('.class:checked').val()
j'utilise ce script simple
$('input[name="myRadio"]').on('change', function() {
var radioValue = $('input[name="myRadio"]:checked').val();
alert(radioValue);
});
utilisez ceci:
value = $('input[name=button-name]:checked').val();
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 vous n'avez qu'un jeu de boutons radio sur un formulaire, le code jQuery est aussi simple que ceci:
$( "input:checked" ).val()
j'ai sorti une bibliothèque pour aider avec ça. Tire toutes les valeurs d'entrée possibles, en fait, mais inclut également quel bouton radio a été coché. Vous pouvez le vérifier à https://github.com/mazondo/formalizedata
ça vous donnera un objet js des réponses, donc un formulaire comme:
<form>
<input type="radio" name"favorite-color" value="blue" checked> Blue
<input type="radio" name="favorite-color" value="red"> Red
</form>
vous donnera:
$("form").formalizeData()
{
"favorite-color" : "blue"
}
pour récupérer toutes les valeurs des boutons radio dans le tableau JavaScript utilisez le code suivant jQuery:
var values = jQuery('input:checkbox:checked.group1').map(function () {
return this.value;
}).get();
essayer
var radioVal = $("#myform").find("input[type='radio']:checked").val();
console.log(radioVal);
une autre façon de l'obtenir:
$("#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>
à Partir de cette question , je suis venu avec un autre moyen pour accéder à la actuellement sélectionné input
lorsque vous êtes dans un click
événement de son étiquette respective. La raison en est que la nouvelle sélection input
n'est pas mise à jour avant la fin de l'événement de clic 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();
});
})
});
ce que je devais faire était de simplifier le code C#, c'est-à-dire faire autant que possible dans le JavaScript frontal. J'utilise un conteneur fieldset parce que je travaille dans DNN et il a sa propre forme. Donc je ne peux pas ajouter de formulaire.
je dois tester quelle zone de texte sur 3 est utilisée et si c'est le cas, quel est le type de recherche? Commence avec la valeur Contient la valeur Exacte de la valeur.
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>
et mon JavaScript est:
alert($('input[name=partNumber]:checked', '#fsPartNum').val());
if(txtPartNumber.val() !== ''){
message = 'Customer Part Number';
}
else if(txtCommercialPartNumber.val() !== ''){
}
else if(txtDescription.val() !== ''){
}
le simple fait de dire n'importe quelle étiquette contenant avec un ID peut être utilisé. Pour les DNNers, c'est bon à savoir. Le but final ici est de passer au code de niveau moyen ce qui est nécessaire pour lancer une recherche de pièces dans SQL Server.
de cette façon, je n'ai pas à copier le code C# précédent beaucoup plus compliqué. Le gros du travail est fait ici.
j'ai dû chercher un peu pour cela et puis bricoler avec pour que ça marche. Donc pour les autres DNNers, j'espère que c'est facile à trouver.
vous avez besoin d'accès avec le sélecteur :checked
:
Cochez cette doc:
exemple:
$('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>