Πώς μπορείτε να αφαιρέσετε όλες τις επιλογές ενός πλαισίου επιλογής και στη συνέχεια να προσθέσετε μια επιλογή και να την επιλέξετε με την jQuery;

Χρησιμοποιώντας τον πυρήνα της jQuery, πώς μπορείτε να αφαιρέσετε όλες τις επιλογές ενός πλαισίου επιλογής, στη συνέχεια να προσθέσετε μια επιλογή και να την επιλέξετε;

Το δικό μου πλαίσιο επιλογής είναι το ακόλουθο.

<Select id="mySelect" size="9"> </Select>

Επεξεργασία: Ο παρακάτω κώδικας ήταν χρήσιμος με την αλυσιδωτή σύνδεση. Ωστόσο, (στον Internet Explorer) το .val('whatever') δεν επέλεξε την επιλογή που προστέθηκε. (Χρησιμοποίησα την ίδια 'τιμή' τόσο στο .append όσο και στο .val).

$('#mySelect').find('option').remove().end()
.append('<option value="whatever">text</option>').val('whatever');

EDIT: Προσπαθώντας να το κάνω να μιμηθεί αυτόν τον κώδικα, χρησιμοποιώ τον ακόλουθο κώδικα κάθε φορά που η σελίδα/φόρμα επαναφέρεται. Αυτό το πλαίσιο επιλογής συμπληρώνεται από ένα σύνολο κουμπιών επιλογής. Η .focus() ήταν πιο κοντά, αλλά η επιλογή δεν εμφανιζόταν επιλεγμένη όπως συμβαίνει με την .selected= "true". Τίποτα δεν είναι λάθος με τον υπάρχοντα κώδικά μου - απλά προσπαθώ να μάθω το jQuery.

var mySelect = document.getElementById('mySelect');
mySelect.options.length = 0;
mySelect.options[0] = new Option ("Foo (only choice)", "Foo");
mySelect.options[0].selected="true";

EDIT: η επιλεγμένη απάντηση ήταν κοντά σε αυτό που χρειαζόμουν. Αυτό λειτούργησε για μένα:

$('#mySelect').children().remove().end()
.append('<option selected value="whatever">text</option>') ;

Αλλά και οι δύο απαντήσεις με οδήγησαν στην τελική μου λύση...

Λύση
$('#mySelect')
    .find('option')
    .remove()
    .end()
    .append('text')
    .val('whatever')
;
Σχόλια (8)

Δεν είμαι σίγουρος τι ακριβώς εννοείτε με το "προσθέστε ένα και επιλέξτε το", δεδομένου ότι θα επιλεγεί από προεπιλογή ούτως ή άλλως. Αλλά, αν προσθέτατε περισσότερα από ένα, θα είχε περισσότερο νόημα. Τι θα λέγατε για κάτι τέτοιο:

$('select').children().remove();
$('select').append('foo');
$('#foo').focus();

Απάντηση στο "EDIT": Μπορείτε να διευκρινίσετε τι εννοείτε με το "Αυτό το πλαίσιο επιλογής συμπληρώνεται από ένα σύνολο κουμπιών επιλογής"; Ένα στοιχείο <select> δεν μπορεί (νόμιμα) να περιέχει στοιχεία <input type="radio">.

Σχόλια (0)

Χάρη στις απαντήσεις που έλαβα, μπόρεσα να δημιουργήσω κάτι σαν το παρακάτω, το οποίο ταιριάζει στις ανάγκες μου. Η ερώτησή μου ήταν κάπως διφορούμενη. Ευχαριστώ για τη συνέχεια. Το τελικό μου πρόβλημα λύθηκε με την προσθήκη του "selected" στην επιλογή που ήθελα να είναι επιλεγμένη.

Σχόλια (0)