Ich möchte den ausgewählten Wert aus einer Gruppe von Optionsfeldern abrufen.
Hier ist mein HTML:
<div id="rates">
<input type="radio" id="r1" name="rate" value="Fixed Rate"> Fixed Rate
<input type="radio" id="r2" name="rate" value="Variable Rate"> Variable Rate
<input type="radio" id="r3" name="rate" value="Multi Rate" checked="checked"> Multi Rate
</div>
Hier ist meine .js:
var rates = document.getElementById('rates').value;
var rate_value;
if(rates =='Fixed Rate'){
rate_value = document.getElementById('r1').value;
}else if(rates =='Variable Rate'){
rate_value = document.getElementById('r2').value;
}else if(rates =='Multi Rate'){
rate_value = document.getElementById('r3').value;
}
document.getElementById('results').innerHTML = rate_value;
Ich werde immer undefiniert.
javascript
html
radio-button
ZombieBatman
quelle
quelle
$("input[type='radio'][name='rate']:checked").val();
.checked
<form></form>
Behälter zu legen .Antworten:
Das Ratenelement ist a
div
, hat also keinen Wert. Dies ist wahrscheinlich, woher dasundefined
kommt.Die
checked
Eigenschaft gibt an, ob das Element ausgewählt ist:quelle
$("input[name=rate]:checked").val()
[checked]
) sucht nach dem Attribut (dh dem Anfangszustand). Sie sollten stattdessen verwenden:checked
, das nach der Eigenschaft sucht (dh nach dem aktuellen Status) und das fast immer das ist, was Sie wollen.document.querySelectorAll("input[name=rate]:checked")[0].value
Dies funktioniert in IE9 und höher und allen anderen Browsern.
quelle
:checked
Selektor nicht.rate
nicht erforderlich sind.:checked
Elemente zu finden - vielleicht hat er alles "gehasht und zwischengespeichert" und es ist eineO(1)
Operation. Wenn Sie kein Profil erstellt haben, um anzuzeigen, dass die Abfragezeit mit der Anzahl der Elemente auf der Seite zunimmt, oder wenn Sie den dahinter stehenden Browser-Quellcode nicht verstehen, können Sie dies nicht feststellen.Sie können den Wert mithilfe der
checked
Eigenschaft abrufen.quelle
break
oderreturn
innerhalb desif
Blocks zusätzliche Durchgänge durch die Schleife stoppt. Ein kleiner Punkt, aber guter Stil.Für Sie Menschen, die am Rande leben:
Es gibt jetzt eine sogenannte RadioNodeList . Wenn Sie auf die value-Eigenschaft zugreifen, wird der Wert der aktuell überprüften Eingabe zurückgegeben. Dadurch entfällt die Notwendigkeit, zuerst die "überprüfte" Eingabe herauszufiltern, wie wir in vielen der veröffentlichten Antworten sehen.
Beispielformular
Um den überprüften Wert abzurufen, können Sie Folgendes tun:
Die JSFiddle, um es zu beweisen: http://jsfiddle.net/vjop5xtq/
Bitte beachten Sie, dass dies in Firefox 33 implementiert wurde (alle anderen wichtigen Browser scheinen dies zu unterstützen). Ältere Browser benötigen ein Polfyill,
RadioNodeList
damit dies ordnungsgemäß funktioniertquelle
form.elements["test"].value
funktioniert sehr gut in Chrome [Version 49.0.2623.87 m].Diejenige, die für mich gearbeitet hat, ist unten von api.jquery.com angegeben.
HTML
JavaScript
Die Variable selectedOption enthält den Wert des ausgewählten Optionsfelds (dh) o1 oder o2
quelle
Eine andere (anscheinend ältere) Option ist die Verwendung des Formats: "document.nameOfTheForm.nameOfTheInput.value;" zB document.mainForm.rads.value;
Sie können auf das Element anhand seines Namens in einem Formular verweisen. Ihr ursprünglicher HTML-Code enthält jedoch kein Formularelement.
Geige hier (funktioniert in Chrome und Firefox): https://jsfiddle.net/Josh_Shields/23kg3tf4/1/
quelle
Verwenden Sie document.querySelector ('Eingabe [Typ = Radio]: Aktiviert'). Value; Um den Wert des ausgewählten Kontrollkästchens zu erhalten, können Sie andere Attribute verwenden, um den Wert wie Name = Geschlecht usw. zu erhalten. Bitte gehen Sie das folgende Snippet durch. Es wird Ihnen definitiv helfen.
Lösung
Danke
quelle
HTML QUELLTEXT:
<input type="radio" name="rdoName" value="YES"/> <input type="radio" name="rdoName" value="NO"/>
JQUERY CODE:
Sie erhalten
quelle
In Javascript können wir die Werte erhalten, indem wir die IDs "
getElementById()
" in dem oben angegebenen Code verwenden, der den Namen und nicht die ID enthält, sodass Sie ihn wie folgt ändern könnenVerwenden Sie diesen rate_value gemäß Ihrem Code
quelle
Etwa ein Jahr ist vergangen, seit die Frage gestellt wurde, aber ich hielt eine wesentliche Verbesserung der Antworten für möglich. Ich finde das Skript am einfachsten und vielseitigsten, da es prüft, ob eine Schaltfläche überprüft wurde und wenn ja, welchen Wert sie hat:
Sie können die Funktion auch in einer anderen Funktion aufrufen:
quelle
Angenommen, Ihr Formularelement wird
myForm
unten von einer Variablen referenziert und Ihre Optionsfelder haben den Namen "Mein-Optionsfeld-Gruppenname". Das Folgende ist rein JavaScript- und standardkonform (obwohl ich nicht überprüft habe, dass es überall verfügbar ist ):Das Obige ergibt den Wert eines aktivierten (oder ausgewählten, wie es auch genannt wird) Optionsfeldelements, falls vorhanden oder auf
null
andere Weise. Der Kern der Lösung ist dienamedItem
Funktion, die speziell mit Optionsfeldern funktioniert.Siehe HTMLFormElement.elements , HTMLFormControlsCollection.namedItem und insbesondere RadioNodeList.value , da
namedItem
normalerweise einRadioNodeList
Objekt zurückgegeben wird.Ich verwende MDN, weil man damit zumindest weitgehend die Einhaltung von Standards verfolgen kann und weil es einfacher zu verstehen ist als viele WhatWG- und W3C-Veröffentlichungen.
quelle
RadioNodeList
durch etwas wieform.elements[name]
oderform[name]
(vielleicht eine Spekulation) oder durch meine obige Syntax zu erhalten.Wenn Sie ein Optionsfeld mehrmals direkt aufrufen, erhalten Sie den Wert der Taste FIRST und nicht der Taste CHECKED. Anstatt Optionsfelder zu durchlaufen, um zu sehen, welches aktiviert ist, rufe ich lieber eine
onclick
Javascript-Funktion auf, die eine Variable festlegt, die später nach Belieben abgerufen werden kann.was ruft:
Ein zusätzlicher Vorteil ist, dass ich Daten behandeln und / oder auf die Überprüfung einer Schaltfläche reagieren kann (in diesem Fall die Schaltfläche SUBMIT aktivieren).
quelle
onchange
Ereignis stattdessen binden, falls der Benutzer eine Tastatur verwendet.Eine Verbesserung gegenüber den zuvor vorgeschlagenen Funktionen:
quelle
Ich gehe dieses Problem mit reinem Javascript an, indem ich den überprüften Knoten finde, seinen Wert finde und ihn aus dem Array heraushole.
Beachten Sie, dass ich mit Pfeil Funktionen . In dieser Geige finden Sie ein funktionierendes Beispiel.
quelle
tagName === 'INPUT'
Scheck hinzufügen , um sicherzustellen, dass Sie nicht an anderen Tags als arbeiteninput
.Wenn Sie jQuery verwenden:
$('input[name="rate"]:checked').val();
quelle
Sie können das
.find()
markierte Element auswählen:quelle
dann...
quelle
rates.rate.value
rates.value
document.getElementById("rates").rate.value
[oder]document.forms[0].rate.value
Wert anhand der ID prüfen:
quelle
Ich habe die Funktion jQuery.click verwendet, um die gewünschte Ausgabe zu erhalten:
Ich hoffe es hilft.
quelle
Wenn sich die Schaltflächen in einem Formular
var myform = new FormData(getformbywhatever); myform.get("rate");
befinden, ist QuerySelector oben eine bessere Lösung. Diese Methode ist jedoch leicht zu verstehen, insbesondere wenn Sie keine Ahnung von CSS haben. Außerdem haben Eingabefelder wahrscheinlich sowieso eine Form.
Nicht überprüft, es gibt andere ähnliche Lösungen, entschuldigen Sie die Wiederholung
quelle
Ich kann stattdessen keine Werte für ein solches Optionsfeld abrufen
quelle
Wenn Sie das verwenden
JQuery
, verwenden Sie bitte das folgende Snippet für eine Gruppe von Optionsfeldern.quelle
Verwenden Sie einfach:
document.querySelector('input[rate][checked]').value
quelle
document.querySelector('input[name = rate]:checked').value
quelle
Sie können die Schaltflächen auch mit einer forEach-Schleife für die Elemente durchlaufen
quelle
https://codepen.io/anon/pen/YQxbZJ
Der HTML
Die JS
quelle
In PHP ist es sehr einfach
HTML-Seite
Nehmen Sie Wert von Form zu PHP
quelle