Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di elisa21
    Registrato dal
    May 2004
    residenza
    Lucca
    Messaggi
    246

    controllo select menu voci uguali

    Ciao a tutti,
    ho provato a cercare sul forum qualcosa che potesse aiutarmi a risolvere il mio problema, putroppo non sono ancora ferrata in js :/
    Ho un select menu popolato prendendo le informazioni da un db, le option del select sono esclusivamente numeri, avrei la necessita, nel momento di invio modulo, di inserire un controllo che verifichi se sono state scelte due opzioni uguali e avisasse l'utente qual'è.
    Come posso fare?

    Questo è il select menu:

    codice:
    <select name="posizione_<%=objRSFoto("id_foto")%>" id="posizione_<%=objRSFoto("id_foto")%>" title="seleziona la posizione">
    <%
    for cnt = 1 to maxPosition		
    %>
         <option value="<%=cnt%>"<% if objRSFoto("gl_rank") = cnt then %> selected="selected"<% end if %>><%=cnt%></option>
    <%
    next
    %>
    </select>
    Vi ringrazio per l'aiuto,
    Elisa
    L'immaginazione è l'intelligenza che si diverte

  2. #2
    Utente di HTML.it L'avatar di elisa21
    Registrato dal
    May 2004
    residenza
    Lucca
    Messaggi
    246
    nessun aiuto?
    L'immaginazione è l'intelligenza che si diverte

  3. #3
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Ma si tratta di una SELECT MULTIPLE o ti riferisci a submit al server effettuati in momenti diversi, da una select non-multipla ?

  4. #4
    Utente di HTML.it L'avatar di elisa21
    Registrato dal
    May 2004
    residenza
    Lucca
    Messaggi
    246
    Originariamente inviato da Enzaccio
    Ma si tratta di una SELECT MULTIPLE o ti riferisci a submit al server effettuati in momenti diversi, da una select non-multipla ?
    select non multipla
    L'immaginazione è l'intelligenza che si diverte

  5. #5
    function Controllo select() {


    var primo_num = document.forms.NOME_FORM.elements.NOME_PRIMO_SELCT .value;
    var secondo_num = document.forms.NOME_FORM.elements.NOME_SECONDO_SEL CT.value;


    if( primo_num == secondo_num)
    alert("ERRORE");
    else { ABILITA IL PULSANTE INVIA o altro}

    }
    richiami la funzione di controllo ad esempio dentro il pulsante submit onclick="Controllo();"

    per avvisare qual'è nel messaggio d'errore stampi il nome della select, quindi riscivi tutto il codice per selezionarla e invece di .value metti .name

    Prendilo più come uno spunto perchè non vorrei aver fatto errori di sintassi poi vedi se qualcuno ha soluzioni migliori

    Ciao

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma quanto mi sembra di capire sono indefinite le select, prova cosi:
    codice:
    function VerificaNum(){
    var sel = document.getElementsByTagName("select");
    for(i=0; i<sel.length; i++){
    if(sel[i].options.selectedIndex.value == sel[i].options.selectedIndex.value){
    alert('hai selezionato due valori uguali');
    return false;}
    }
    }
    In sintesi devi cliclare le select e quando trovi due con valore uguale blocchi l'invio, non lo testato, ma dovrebbe funzionare.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it L'avatar di elisa21
    Registrato dal
    May 2004
    residenza
    Lucca
    Messaggi
    246
    Originariamente inviato da cavicchiandrea
    Ma quanto mi sembra di capire sono indefinite le select, prova cosi:
    codice:
    function VerificaNum(){
    var sel = document.getElementsByTagName("select");
    for(i=0; i<sel.length; i++){
    if(sel[i].options.selectedIndex.value == sel[i].options.selectedIndex.value){
    alert('hai selezionato due valori uguali');
    return false;}
    }
    }
    In sintesi devi cliclare le select e quando trovi due con valore uguale blocchi l'invio, non lo testato, ma dovrebbe funzionare.
    ti ringrazio, lo provo subito!!
    L'immaginazione è l'intelligenza che si diverte

  8. #8
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Mi piace farmi confondere le idee dalle donne, sì; però mi ce ne è voluto assai prima di convincermi che trattasi di più SELECT sul campo.

    Almeno a farmi coraggio nel prendere questa direzione è servito, il post di Andrea.
    Però se stabiliamo:
    if(sel&#91;i].options.selectedIndex.value == sel&#91;i].options.selectedIndex.value)

    confrontiamo in realtà sel&#91;i].options.selectedIndex.value con se stesso (la medesima SELECT); di conseguenza, ne risulterà sempre l' eguaglianza e il messaggio di Errore lo avremo zompante in ogni caso.
    Questo, a prescindere dal fatto che sel&#91;i].options.selectedIndex.value ritorna undefined
    (provare a metterlo in un alert(sel&#91;i].options.selectedIndex.value); )
    in quanto path inadeguata ad estrarre il Valore selezionato.

    La più semplice:
    alert(sel&#91;0].value);

    o la più completa:
    alert(sel&#91;0].options[sel[0].options.selectedIndex].value);

    does the trick, riferita con l' indice numerico &#91;0] alla prima SELECT che incontra nel Documento.

    Se è noto quante SELECT avremo nella pagina, pur rimanendo ignoto/dinamico il loro contenuto in OPTION 's, possiamo fare a meno del ciclo for e domani decidersi a buttare giù un codice giusto.

  9. #9
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530

    ONCHANGE Handler of Event

    Quanto alla bozza di codice di "didoproject", attenzione che non sono ammessi spazi vuoti o altri caratteri invalidi nel nominare le funzioni:
    function Controllo select() {

    Conservo la via del document.getElementsByTagName("nome_elemento") presa da Andrea, che ci consente di individuare gli Elementi SELECT a prescindere dal loro NAME che verrà valorizzato dinamicamente.
    Faccio il caso di due SELECT, che supponiamo ASP ha provveduto a nominare e popolare, e partirei da questo modellino completo ma non definitivo; il gruppo di alert dopo lo puoi togliere o commentare ogni riga con doppia slash // :
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html><head><title>SELECT 's checker</title>
    
    <script type="text/javascript">
    
    function VerificaNum(){
    
     var sel = document.getElementsByTagName("select");  //elabora una collection (array) di Elementi
    
     alert("esistono " + sel.length + " SELECT nel Documento");
     alert("dalla prima: "  +  sel[0].value);
     alert("dalla seconda: " + sel[1].options[sel[1].selectedIndex].value);
    
         if(sel[0].value == sel[1].value){
             alert('Rimangono attualmente selezionati due valori uguali.\nProcedere ad una diversa selezione, prego.');
             document.forms[0].elements["submit_btn"].disabled = "disabled";
     } else {
             document.forms[0].elements["submit_btn"].disabled = "";
     };
    }
    
    </script>
    
    </head><body>
    <form name="main" action="" method="">
    <div align="center">
    
    <select name="first" onchange="VerificaNum();">
     <option value="2">2</option>
     <option value="3">3</option>
     <option value="2">2</option>
     <option value="1">1</option>
     <option value="3">3</option>
    </select>
    
    <select name="second" onchange="VerificaNum();">
     <option value="2">2</option>
     <option value="3" selected>3</option>
     <option value="2">2</option>
     <option value="1">1</option>
     <option value="3">3</option>
    </select>
    
    <hr>
    <input value="invia" type="submit" name="submit_btn">
    
    </div>
    </form>
    </body></html>
    Come prima miglioria, bisognerà prevedere la circostanza che si presentino già in partenza due Valori uguali (default option), e l' utente procede all' invio senza operare alcuna selezione.
    La chiamata alla funzione è difatti demandata al gestore d' evento ONCHANGE ma se l' utente non cambia nulla, neanche la verifica parte.
    Sentiremo dal poster: se questa eventualità diviene già scartatabile in partenza per qualche propizia ragione di popolamento dati, allora il modello è praticamente finito così.
    Altrimenti, una prima strada prevede di includere come OPTION di default, una del tipo:

    <option value="">- seleziona -</option>

    e partire con un pulsante di SUBMIT normalmente disabilitato:

    <input value="invia" type="submit" name="submit_btn" disabled="disabled">

    e qualche altra cosetta; tanto da obbligare l' utente alla selezione, all' onchange quindi.
    Una seconda via, convertirebbe l' <input type="submit"> in type="button"> demandando l' invio del FORM a JavaScript.

    Alla fine di tutto il discorso, vorrei valutare anche il caso dell' utente che avesse JavaScript disabilitato sul Browser (coi Netscape / FireFox è possibile): in tal caso, il controllo non parte mentre l' <input type="submit"> resta capace di inviare valori indesiderati.
    Non so se la ricezione di valori uguali può comportare grossi problemi. Poi ne discutiamo meglio.

  10. #10
    Utente di HTML.it L'avatar di elisa21
    Registrato dal
    May 2004
    residenza
    Lucca
    Messaggi
    246

    Re: ONCHANGE Handler of Event

    Originariamente inviato da Enzaccio
    Quanto alla bozza di codice di "didoproject", attenzione che non sono ammessi spazi vuoti o altri caratteri invalidi nel nominare le funzioni:
    function Controllo select() {

    Conservo la via del document.getElementsByTagName("nome_elemento") presa da Andrea, che ci consente di individuare gli Elementi SELECT a prescindere dal loro NAME che verrà valorizzato dinamicamente.
    Faccio il caso di due SELECT, che supponiamo ASP ha provveduto a nominare e popolare, e partirei da questo modellino completo ma non definitivo; il gruppo di alert dopo lo puoi togliere o commentare ogni riga con doppia slash // :
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html><head><title>SELECT 's checker</title>
    
    <script type="text/javascript">
    
    function VerificaNum(){
    
     var sel = document.getElementsByTagName("select");  //elabora una collection (array) di Elementi
    
     alert("esistono " + sel.length + " SELECT nel Documento");
     alert("dalla prima: "  +  sel[0].value);
     alert("dalla seconda: " + sel[1].options[sel[1].selectedIndex].value);
    
         if(sel[0].value == sel[1].value){
             alert('Rimangono attualmente selezionati due valori uguali.\nProcedere ad una diversa selezione, prego.');
             document.forms[0].elements["submit_btn"].disabled = "disabled";
     } else {
             document.forms[0].elements["submit_btn"].disabled = "";
     };
    }
    
    </script>
    
    </head><body>
    <form name="main" action="" method="">
    <div align="center">
    
    <select name="first" onchange="VerificaNum();">
     <option value="2">2</option>
     <option value="3">3</option>
     <option value="2">2</option>
     <option value="1">1</option>
     <option value="3">3</option>
    </select>
    
    <select name="second" onchange="VerificaNum();">
     <option value="2">2</option>
     <option value="3" selected>3</option>
     <option value="2">2</option>
     <option value="1">1</option>
     <option value="3">3</option>
    </select>
    
    <hr>
    <input value="invia" type="submit" name="submit_btn">
    
    </div>
    </form>
    </body></html>
    Come prima miglioria, bisognerà prevedere la circostanza che si presentino già in partenza due Valori uguali (default option), e l' utente procede all' invio senza operare alcuna selezione.
    La chiamata alla funzione è difatti demandata al gestore d' evento ONCHANGE ma se l' utente non cambia nulla, neanche la verifica parte.
    Sentiremo dal poster: se questa eventualità diviene già scartatabile in partenza per qualche propizia ragione di popolamento dati, allora il modello è praticamente finito così.
    Altrimenti, una prima strada prevede di includere come OPTION di default, una del tipo:

    <option value="">- seleziona -</option>

    e partire con un pulsante di SUBMIT normalmente disabilitato:

    <input value="invia" type="submit" name="submit_btn" disabled="disabled">

    e qualche altra cosetta; tanto da obbligare l' utente alla selezione, all' onchange quindi.
    Una seconda via, convertirebbe l' <input type="submit"> in type="button"> demandando l' invio del FORM a JavaScript.

    Alla fine di tutto il discorso, vorrei valutare anche il caso dell' utente che avesse JavaScript disabilitato sul Browser (coi Netscape / FireFox è possibile): in tal caso, il controllo non parte mentre l' <input type="submit"> resta capace di inviare valori indesiderati.
    Non so se la ricezione di valori uguali può comportare grossi problemi. Poi ne discutiamo meglio.
    lo provo subito
    grazie grazie
    elisa
    L'immaginazione è l'intelligenza che si diverte

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.