Προς το περιεχόμενο

select-multiple


Uberalles_gr

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα παιδιά,

 

έχω αυτό το select που είναι Multiple

 

>
<select multiple="multiple" name="category[]" id="category[]">
 .......
 .......
</select>

 

και ρωτάω πως μπορώ μέσα από javascript να ελέγχω εάν έχει πατήσει έστω και μία από τις επιλογές?

Δημοσ.

Κάτι απλό δεν υπάρχει π.χ. για να ελέγχεις ένα text γράφεις

>
doucment.myform.mytext.value

 

κάτι αντίστοιχο δεν υπάρχει για select-multiple γιατί ψάχνω στον γούγλη αλλά δεν μπορώ να βρω κάτι

Δημοσ.

Έστω ότι το multiple select είναι έτσι:

 

><select multiple="multiple" name="category[]" id="category[]" onChange="getValues();">

    <option value="1">Option one</option>
    <option value="2">Option two</option>

</select>

Τότε στο αρχείο .js που έχεις τα άλλα functions σου θα πρέπει να προσθέσεις:

 

>function getValues() {

    var userselection = document.getElementById('category[]').selectedIndex;
    alert("Selected option's value is: "+document.getElementById('category[]').value);

}

Το παραπάνω απλά σου πετάει ένα παραθυράκι για να δείς ότι όντως δουλεύει όταν υπάρχει αλλαγή του value από τον χρήστη. Αλλά από εκεί και πέρα μπορείς να χρησιμοποιήσεις το option αυτό (το οποίο πλέον είναι αποθηκευμένο στην μεταβλητή userselection) αφού το έχεις κάνει fetch με την συναρτηση getValues() για οποιονδήποτε άλλο σκοπό θέλεις.

 

Και φυσικά να φροντίσεις να κάνεις import το αρχείο αυτό στο header της σελίδας στην οποία θα βρίσκεται το multiple selection box.

 

Εάν δεν έχεις ξεχωριστό αρχείο για τα javascript μπιχλιμπίδια σου, απλά φρόντισε να βάλεις το παραπάνω function μέσα σε <script type="text/javascript"></script> μεταξύ των <head></head> tags της σελίδας.

Δημοσ.

Το έκανα ως εξής

>
if (document.getElementById('category[]').value.length == 0)
{
alert("Παρακαλώ συμπληρώστε το πεδίο 'Κατηγορία'!");
document.getElementById('category[]').focus();
return false;
}

 

που ελέγχω εάν έχει πατήσει έστω και ένα από το multiple select

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...