Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Selezionare un javascript in base a valore da array

    ciao,

    volevo sapere se è possibile con javascript selezionare un valore di una select in base alla corrispondenza con un array di valore.

    Ad esempio se ho una select:

    <SELECT id="realitems">
    <OPTION value="">Select...
    <OPTION value="afghanistan">Afghanistan
    <OPTION value="albania">Albania
    <OPTION value="algeria">Algeria
    <OPTION value="andorra">Andorra
    <OPTION value="angola">Angola
    </SELECT>

    ed un array: (italia,america,olanda,algeria)

    è possibile selezionare la corrispondena in "algeria"?

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    codice:
    <script>
    ar = new Array('italia','america','olanda','algeria');
    function chi() {
    	sl = document.getElementById('realitems');
    	for (var i=0;i<ar.length;i++) {
    		for (var j=0;j<sl.length;j++) {
    			if (sl.options[j].value==ar[i]) sl.selectedIndex = j;
    		}
    	}
    }
    </script>
    
    
    <SELECT id="realitems">
    <OPTION value="">Select...
    <OPTION value="afghanistan">Afghanistan
    <OPTION value="albania">Albania
    <OPTION value="algeria">Algeria
    <OPTION value="andorra">Andorra
    <OPTION value="angola">Angola
    </SELECT>
    <input type="button" value="?" onclick="chi()">
    A te gestire eventuali corrispondenze multiple
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Ciao,

    grazie mille funziona benissimo:

    Volevo chiederti solo una cosa, nel caso la select fosse

    codice:
    <SELECT id="realitems"> <OPTION value="">Select... <OPTION value="1">Afghanistan <OPTION value="2">Albania <OPTION value="3">Algeria <OPTION value="4">Andorra <OPTION value="5">Angola </SELECT>
    dovrei modificare il dodice così?

    codice:
    if (sl.options[j].text==ar[i]) sl.selectedIndex = j;
    Ho provato ma nn sembra funzionare...

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da Sgozzapolli
    Ho provato ma nn sembra funzionare...
    Attenzione alle maiuscole/minuscole, eventualmente trasforma i termini del confronto con il metodo .toUpperCase() o .toLowerCase()

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    A) <OPTION value="1">Afghanistan</OPTION>
    B) il javascript e case-sensitive pertanto l'array dovrà essere scritta uguale alla option oppure dovrai forzarla tipo:
    //forza tutto in minuscolo
    if (sl.options[j].text.toLowerCase()==ar[i]) sl.selectedIndex = j;
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    grazie mille ragazzi mi ero accorto dell'errore e stavo appunto per postare qui la correzione, che voi avete già brillantemente spiegato.

    Un'altra cosa se possibile.

    Mettiamo di avere la select:

    codice:
    <SELECT id="realitems"> <OPTION value="">Select... <OPTION value="afghanistan">Afghanistan <OPTION value="albania">Albania <OPTION value="algeria">Algeria <OPTION value="andorra">Andorra <OPTION value="algeria1">Angola uno <OPTION value="algeria2">Angola due <OPTION value="algeria3">Angola tre </SELECT> </FORM>
    e l'array: ('italia','america','olanda','angola')

    in questo caso la funzione nn seleziona nessun valore. Ma se gli volessi far selezionare la stringa simile anzichè esatta, tipo angola uno? è possibile o mi darà sempre errore perchè vuole la corrispondenza esatta? o mi darà sempre errore perchè angola uno , angola due e angola tre sono troppo simili?

    Si potrebbe risolvere con le regex?

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma se le conosci a priori le puoi aggiungere direttamente nella array, mentre sviluppare un reg boh... non so oppure potresti provare cosi:
    if (sl.options[j].text.toLowerCase().indexOf(ar[i])!=-1) sl.selectedIndex = j;
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    no le alternative nn le conosco a priori.

    La tua soluzione funziona, ma mi seleziona sempre l'ultima opzione disponibile, angola tre.

    Ma indexOf(ar[i])!=-1) cosa restituisce? cioè cosa è quel -1?

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    -1 vuol dire stringa non trovata...
    codice:
    if (sl.options[j].text.toLowerCase().indexOf(ar[i])!=-1) {
      sl.selectedIndex = j;
      return true;
    }
    Al primo trovato esce dalla funzione
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  10. #10
    Ciao, grazie della risposta.

    Ma non capisco perchè mi seleziona sempre l'ultimo trovato.

    Cioè se sposto l'ordine all'interno della select mi restituisce sempre l'ultima corrispondenza che trova nella select.

    Capita questo perchè legge i dati della select al contrario?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.