Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    667

    [JS] Controllo select (non sapendo i nomi)

    Una domanda a tutti:

    se ho un form ma non conosco il nome di ciascun campo ma conosco solo il valore del campo con cui mi dovrebbe dare l'alert...ho provato in questa maniera....ma niente...che sbaglio????


    <script language="JavaScript">
    function controlla(){
    var questo =document.forms[0]
    alert(questo.elements.length)
    for (i=0; i<questo.elements.length; i++){
    if(questo.elements[i].value='Scegli categoria' || questo.elements[i].value='Scegli sottocategoria' || questo.elements[i].value='Descrizione prodotto'){
    if(questo.elements[i].value='Scegli sottocategoria')
    alert('Selezionare prodotto')
    return (false)
    }
    }
    </script>

    so solo che i campi select sono tre e ognuno ha un valore predefinito diverso....Come posso Procedere????

    Grazie David

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Mi sa che devi conoscere qualcosa di piu`.

    Comunque per leggere il value di una select, il procedimento e` diverso (mi pareva di avertelo gia` detto):

    for (i=0; i<questo.elements.length; i++){
    var vals = questo.elements[i].options[questo.elements[i].selectedIndex].value;
    if(vals == 'Scegli categoria' || vals == 'Scegli s ...
    solo che verifica il value selezionato, non quello default.

    Non e` possibile conoscere il valore default (almeno io non lo conosco); ma se sei sicuro che "scegli categoria" sta nel primo posto, la cosa e` piu` semplice:

    for (i=0; i<questo.elements.length; i++){
    var sel = questo.elements[i];
    if(sel.type == "select-one" && sel.options[0].value == 'Scegli categoria') ...

    Se non sono stato chiaro (ho in effetti tagliato un po') fatti risentire.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    667
    Scusa se non ho risp ieri ma sono stato incasinato.

    come valore di default intendevo che lo stato iniziale delle select è un testo statico (scegli categoria - scegli sottocat. - scegli prod) e in caso di invio della form con uno di questi valori selezionato, allora mi deve dare l'alert.

    Ora provo come hai detto tu.Si, è vero che era stata postata quella domanda...(non da me)..il problema è che stavo ricercando ma senza trovare niente....

    Grazie David

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    667
    Ehi Mich_ ....

    ma non posso fare una cosa del genere????

    <script language="JavaScript">
    function controlla(){
    var questo =document.forms[0]
    for (i=0; i<3; i++)
    //alert(i)
    var vals = questo.elements[i].value;
    if(vals=='' && i ==0){
    alert('Selezionare categoria')
    return (false)
    }
    else if(vals=='' && i ==1){
    alert('Selezionare sottocategoria')
    return (false)
    }
    if(vals=='' && i ==2){
    alert('Selezionare descrizione prodotto')
    return (false)
    }
    }
    </script>
    vals è sempre vuoto però i aumenta....ma mi da sempreil primo alert.....bhoooo.....


    Grazie david

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non basta.

    il value di un campo si ottiene in modo diverso a seconda del tipo di campo:

    var valore1 = document.NOMEFORM.NOMECAMPO.value; // text, textarea, hidden

    var rr = document.NOMEFORM.NOMECAMPO; // radio
    var valore2 = rr[i].value; // dove i e` l'indice del radio

    var ss = document.NOMEFORM.NOMECAMPO; //select
    var valore3 = ss.options[ss.selectedIndex].value;

    la matrice elements[] raccoglie tutti i campi di un form, per cui prima di testare il value occorre sapere che sia un select.

    Ora tu mi dici che distingui i select solo dal value della prima opzione, per cui devi testare
    document.forms[0].elements[i].options[0].value
    cosa che si puo` fare solo se e` una select, quindi prima occorre testare che sia una select:

    var ss = document.forms[0].elements[i];
    if(ss.type=="select-one" && ss.options[0].value=="....")

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    667
    mmm....mich_ .... rieccomi qua,

    stavo provando...grazie per la spiegazione di prima, solo che stavo testando come hai scritto te ma fa la stessa cosa che faceva con il codice che ho postato prima della tua risp.

    Cioè: ho tre select a,b,c (corrispettivi:categoria,sottocategoria,prodotto)

    il valore iniziale è vuoto per tutte e tre ok?
    se clicco su submit mi dà l'alert con scritto : selezionare cat e ok.

    se cambio entrambe le select il form viene inviato e ok.

    ma se cambio la prima select(categorie)e non le altre due, mi da sempre l'alert selezionare categoria e non selezionare sottocategoria
    e cosi anche per l'ultima.

    Come posso fare una cosa del genere??

    le select sono create dinamicamente.

    Grazie mich_ scusa per il disturbo arrecato...

    David

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Scusa, ero partito dall'idea che ci fosse qualcosa nel value della prima opzione di ciascuna.

    Per procedere con razionalita`, mi serve sapere:
    - il form e` generato da uno script lato server?
    - se ci sono (o ci potranno essere) altri campi oltre i tre selct
    - cosa conosci di tali campi che vuoi testare
    - cosa vuoi ottenere alla fine (e` solo un test per vedere se sono vuoti?)


    Un esempio del codice HTML (eventualmente con segnato cosa potrebbe contenere un dato campo/valore) potrebbe aiutare nella spiegazione e per costruire gli esempi.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    667
    Si, il form è generato dinamicamente lato server da coldfusion...

    ma come non detto....oggi sto un po rinco.... anche se le select sono generate dinamicamente , il nome resta sempre quello....

    Grazie per l'attenzione Mich_ ... come non detto ho risolto mooooolto semplicemente...

    cmq se non non avessi avuto i nome e il nome del form volevo fare una cosa del genere ma dinamica:

    <script language="JavaScript">
    function controlla(){
    if(document.maga.TwoSelectsRelated1.value=="") {
    alert('Selezionare categoria')
    return (false)
    }
    else if(document.maga.TwoSelectsRelated2.value==""){
    alert('Selezionare sottocategoria')
    return (false)
    }
    else if(document.maga.TwoSelectsRelated3.value==""){
    alert('Selezionare descrizione prodotto')
    return (false)
    }
    }
    </script>

    Come dovrei fare?????

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    function controlla(ff){
    if(ff.TwoSelectsRelated1.options[ff.TwoSelectsRelated1.selectedIndex].value=="") {
    alert('Selezionare categoria')
    return (false)
    }
    else if(ff.TwoSelectsRelated2.options[ff.TwoSelectsRelated2.selectedIndex].value==""){
    alert('Selezionare sottocategoria')
    return (false)
    }
    else if(ff.TwoSelectsRelated3.options[ff.TwoSelectsRelated3.selectedIndex].value==""){
    alert('Selezionare descrizione prodotto')
    return (false)
    }
    }


    Questa funzione va chiamata con:
    <form ... onsubmit="controlla(this);">


    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.