Die Problemstellung ist einfach. Ich brauche, um zu sehen, wenn Benutzer eine Optionsschaltfläche aus einer Radiogruppe ausgewählt hat. Jede Optionsschaltfläche in der Gruppe teilen dieselbe ID.
Das Problem ist, dass ich keine Kontrolle darüber habe, wie das Formular generiert wird. Hier ist der Beispielcode, wie ein Radio-Button-Steuerungscode aussieht:
<input type="radio" name='s_2_1_6_0' value='Mail copy to my bill to address' id = "InvCopyRadio" onchange = 'SWESubmitForm(document.SWEForm2_0,s_4,"","1-DPWJJF")' style="height:20;width:25" tabindex=1997 >
Wenn ein Radio-Button ausgewählt wird, wird dem Steuerelement kein "checked" Attribut hinzugefügt, sondern nur der Text checked (ich vermute, nur die Eigenschaft checked ohne einen Wert). Nachfolgend sehen Sie, wie ein ausgewähltes Steuerelement aussieht
<input type="radio" checked name='s_2_1_6_0' value='Mail copy to my bill to address' id = "InvCopyRadio" onchange = 'SWESubmitForm(document.SWEForm2_0,s_4,"","1-DPWJJF")' style="height:20;width:25" tabindex=1997 >
Kann mir jemand mit jQuery-Code helfen, der mir helfen kann, den Wert der angekreuzten Optionsschaltfläche zu erhalten?
Erstens können Sie nicht mehrere Elemente mit der gleichen ID haben. Ich weiß, Sie sagten, dass Sie nicht kontrollieren können, wie das Formular erstellt wird, aber... versuchen Sie, irgendwie alle IDs aus den Radios zu entfernen oder sie eindeutig zu machen.
Um den Wert des ausgewählten Optionsfeldes zu erhalten, wählen Sie es mit dem Filter :checked
nach dem Namen aus.
var selectedVal = "";
var selected = $("input[type='radio'][name='s_2_1_6_0']:checked");
if (selected.length > 0) {
selectedVal = selected.val();
}
EDIT
Sie haben also keine Kontrolle über die Namen. In diesem Fall würde ich sagen, legen Sie diese Radio-Buttons alle innerhalb eines div, benannt, sagen wir, radioDiv
, dann leicht ändern Sie Ihre Selektor:
var selectedVal = "";
var selected = $("#radioDiv input[type='radio']:checked");
if (selected.length > 0) {
selectedVal = selected.val();
}
$("#radioID") // select the radio by its id
.change(function(){ // bind a function to the change event
if( $(this).is(":checked") ){ // check if the radio is checked
var val = $(this).val(); // retrieve the value
}
});
Stellen Sie sicher, dass Sie dies in die DOM ready-Funktion ($(function(){...});
oder $(document).ready(function(){...});
) einbinden.
if (!$("#InvCopyRadio").prop("checked") && $("#InvCopyRadio").prop("checked"))
// do something