Η δήλωση του προβλήματος είναι απλή. Πρέπει να δω αν ο χρήστης έχει επιλέξει ένα κουμπί επιλογής από μια ομάδα επιλογών. Κάθε κουμπί επιλογής στην ομάδα έχει το ίδιο αναγνωριστικό.
Το πρόβλημα είναι ότι δεν έχω τον έλεγχο του τρόπου δημιουργίας της φόρμας. Ακολουθεί το δείγμα κώδικα για το πώς μοιάζει ο κώδικας ελέγχου ενός ραδιοκουμπιού:
<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 >
Εκτός από αυτό όταν επιλέγεται ένα κουμπί επιλογής δεν προσθέτει ένα χαρακτηριστικό "checked" στο στοιχείο ελέγχου μόνο το κείμενο checked (υποθέτω απλά την ιδιότητα checked χωρίς τιμή). Παρακάτω φαίνεται πώς μοιάζει ένα επιλεγμένο στοιχείο ελέγχου ραδιοφώνου
<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 >
Μπορεί κάποιος να με βοηθήσει με κώδικα jQuery που μπορεί να με βοηθήσει να πάρω την τιμή του checked radio button?
Πρώτον, δεν μπορείτε να έχετε πολλαπλά στοιχεία με το ίδιο id. Ξέρω ότι είπατε ότι δεν μπορείτε να ελέγξετε τον τρόπο δημιουργίας της φόρμας, αλλά... προσπαθήστε να αφαιρέσετε με κάποιο τρόπο όλα τα ids από τα radios, ή να τα κάνετε μοναδικά.
Για να λάβετε την τιμή του επιλεγμένου radio button, επιλέξτε το με βάση το όνομα με το φίλτρο :checked
.
var selectedVal = "";
var selected = $("input[type='radio'][name='s_2_1_6_0']:checked");
if (selected.length > 0) {
selectedVal = selected.val();
}
EDIT
Έτσι, δεν έχετε κανέναν έλεγχο των ονομάτων. Σε αυτή την περίπτωση θα έλεγα να βάλετε αυτά τα κουμπιά επιλογής όλα μέσα σε ένα div, με όνομα, ας πούμε, radioDiv
, και στη συνέχεια να τροποποιήσετε ελαφρώς τον επιλογέα σας:
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
}
});
Βεβαιωθείτε ότι αυτό είναι τυλιγμένο στη συνάρτηση ready του DOM ($(function(){...});
ή $(document).ready(function(){...});
).
if (!$("#InvCopyRadio").prop("checked") && $("#InvCopyRadio").prop("checked"))
// do something