Ich habe ein seltsames Problem mit meinem JS-Programm. Ich hatte das richtig funktioniert, aber aus irgendeinem Grund funktioniert es nicht mehr. Ich möchte nur den Wert des Optionsfelds (welches ausgewählt ist) finden und an eine Variable zurückgeben. Aus irgendeinem Grund kehrt es immer wieder zurück undefined
.
Hier ist mein Code:
function findSelection(field) {
var test = 'document.theForm.' + field;
var sizes = test;
alert(sizes);
for (i=0; i < sizes.length; i++) {
if (sizes[i].checked==true) {
alert(sizes[i].value + ' you got a value');
return sizes[i].value;
}
}
}
submitForm
::
function submitForm() {
var genderS = findSelection("genderS");
alert(genderS);
}
HTML:
<form action="#n" name="theForm">
<label for="gender">Gender: </label>
<input type="radio" name="genderS" value="1" checked> Male
<input type="radio" name="genderS" value="0" > Female<br><br>
<a href="javascript: submitForm()">Search</A>
</form>
javascript
html
for-loop
radio-button
mkyong
quelle
quelle
Antworten:
Sie können so etwas tun:
jsfiddle
Bearbeiten: Vielen Dank an HATCHA und jpsetung für Ihre Bearbeitungsvorschläge.
quelle
@
Syntax war noch früher veraltet (jquery 1.2)@
sollte das auf jeden Fall entfernt werdendocument.querySelector()
sollte jetzt wahrscheinlich der empfohlene Ansatz in reinem JavaScript sein.Dies funktioniert mit jedem Explorer.
Dies ist eine einfache Möglichkeit, den Wert eines beliebigen Eingabetyps abzurufen. Sie auch nicht brauchen jQuery Pfad zu enthalten.
quelle
document.querySelector(...)
istnull
.var selector = document.querySelector('input[name="genderS"]:checked'); if(selector) console.log(selector.value);
:checked
Trick hat mich totalaccountType = template.find("[name='optradio']:checked").value;
quelle
document.forms.your-form-name.name-shared-by-radio-buttons.value
Seit jQuery 1.8 lautet die korrekte Syntax für die Abfrage
Nicht
$('input[@name="genderS"]:checked').val();
mehr, was in jQuery 1.7 (mit dem @ ) funktionierte .quelle
ECMAScript 6 Version
quelle
Die einfachste Lösung:
quelle
Versuche dies
Eine Geige hier .
quelle
Bearbeiten: Wie von Chips_100 gesagt, sollten Sie verwenden:
direkt ohne Verwendung der Testvariablen.
Alte Antwort:
Sollte dir das nicht
eval
gefallen?Ich weiß nicht, wie das funktioniert, aber für mich kopieren Sie nur eine Zeichenfolge.
quelle
var sizes = document.theForm[field];
die erste Zuweisung sagen und löschen, verwenden Sie also keinetest
Variable mehr.eval('var sizes=document.theForm.' + field)
?var sizes = eval(test);
würde so funktionieren (ich teste es nur in firebug).field
Klammern eingefügt habe, wird der Fehler "Unerwartetes Token [" angezeigt. Irgendwelche Vermutungen warum?Dies ist reines JavaScript, basierend auf der Antwort von @Fontas, aber mit Sicherheitscode, um eine leere Zeichenfolge zurückzugeben (und a zu vermeiden
TypeError
), wenn kein Optionsfeld ausgewählt ist:Der Code bricht folgendermaßen zusammen:
<input>
Typ ist, (b) einname
Attribut von hatgenderS
hat und (c) überprüft wird.genderSRadio
Variable ist wahr, wenn Zeile 1 das Steuerelement findet, und null / falsey, wenn dies nicht der Fall ist.Verwenden Sie für JQuery die Antwort von @ jbabey und beachten Sie, dass das Optionsfeld zurückgegeben wird, wenn es nicht ausgewählt ist
undefined
.quelle
Falls jemand nach einer Antwort gesucht hat und wie ich hier gelandet ist, können Sie mit Chrome 34 und Firefox 33 Folgendes tun:
oder einfacher:
Aktualisierung: https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList/value
quelle
Hier ist ein Beispiel für Radios, bei denen kein Attribut "Checked =" Checked "" verwendet wird
DEMO : http://jsfiddle.net/ipsjolly/hgdWp/2/ [ Klicken Sie auf Suchen, ohne ein Radio auszuwählen ]
Quelle: http://bloggerplugnplay.blogspot.in/2013/01/validateget-checked-radio-value-in.html
quelle
Hier ist eine gute Möglichkeit, den Wert des aktivierten Optionsfelds mit einfachem JavaScript abzurufen:
Quelle: https://ultimatecourses.com/blog/get-value-checked-radio-buttons
Verwenden dieses HTML:
Sie können auch die Eigenschaft Array Find verwenden
checked
, um das markierte Element zu finden:quelle
Mit einem reinen Javascript können Sie den Verweis auf das Objekt verarbeiten, das das Ereignis ausgelöst hat.
quelle
Nehmen wir an, Sie müssen verschiedene Zeilen von Optionsfeldern in einem Formular platzieren, die jeweils separate Attributnamen ('Option1', 'Option2' usw.), aber denselben Klassennamen haben. Möglicherweise benötigen Sie sie in mehreren Zeilen, in denen sie jeweils einen Wert basierend auf einer Skala von 1 bis 5 für eine Frage einreichen. Sie können Ihr Javascript so schreiben:
Ich würde auch die endgültige Ausgabe in ein verstecktes Formularelement einfügen, das zusammen mit dem Formular gesendet werden soll.
quelle
quelle
Wenn Sie Ihrem Formularelement () eine ID zuweisen können, kann dieser Weg als sichere Alternative angesehen werden (insbesondere, wenn der Name des Funkgruppenelements im Dokument nicht eindeutig ist):
HTML:
quelle
etc dann einfach benutzen
Oder
quelle
quelle