Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536

    Campo e bottone non selezionabile in base a valore select

    Ciao

    Ho un campo select dal quale è possibile fare delle scelte.
    Avrei la necessità di rendere un campo input non editabile e a valore nullo o zero e un bottone disattivato se un determinato valore è selezionato nel campo select.

    E' possibile ottenere una cosa del genere con javascript/ajax?

    Come?

    Grazie

  2. #2
    codice:
    <form> prova:
    
    <select name="foo" onchange="validami(this, 1)">
    <option value="ok">ok</option>
    <option value="no">no</option>
    </select>
    
    
    <input type="text" name="foo2" value="" />
    <input type="button" name="foo3" value="clicca" />
    </form>
    
    <script>
    function validami(sel, index){
    if(sel.selectedIndex==index){
    sel.form.foo2.disabled=true; sel.form.foo2.value='';
    sel.form.foo3.disabled=true;
    }
    else{
    sel.form.foo2.disabled=false;
    sel.form.foo3.disabled=false;
    };
    }
    </script>
    presume i nomi del campo di testo siano foo2, del pulsante foo3, e che conosci l'index della option che deve innescare il comportamento (in questo caso la numero 1, tenendo presente che il conteggio degli elementi in javascript non parte da 1 ma da 0)

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    Originariamente inviato da TrueLies
    codice:
    <form> prova:
    
    <select name="foo" onchange="validami(this, 1)">
    <option value="ok">ok</option>
    <option value="no">no</option>
    </select>
    
    
    <input type="text" name="foo2" value="" />
    <input type="button" name="foo3" value="clicca" />
    </form>
    
    <script>
    function validami(sel, index){
    if(sel.selectedIndex==index){
    sel.form.foo2.disabled=true; sel.form.foo2.value='';
    sel.form.foo3.disabled=true;
    }
    else{
    sel.form.foo2.disabled=false;
    sel.form.foo3.disabled=false;
    };
    }
    </script>
    presume i nomi del campo di testo siano foo2, del pulsante foo3, e che conosci l'index della option che deve innescare il comportamento (in questo caso la numero 1, tenendo presente che il conteggio degli elementi in javascript non parte da 1 ma da 0)


    Ciao

    C'è qualcosa che non va.

    Questo il mio javascript:

    codice:
    <script type="text/javascript">
    function validami(sel, index){
    if(sel.selectedIndex==index){
    sel.myform.datafinale.disabled=true; sel.myform.datafinale.value='';
    sel.myform.calcola.disabled=true;
    }
    else{
    sel.myform.datafinale.disabled=false;
    sel.myform.calcola.disabled=false;
    };
    }
    </script>
    questa la pagina (html-php)dove è inserito il form con la select:

    Codice PHP:
    .............
    <form name="myform" action="scadenze.php" method="post">
    ........................

        <td height="30" width="267"  colspan="2">
            
            <? 
         $option 
    '';
    while(
    $rowgg mysql_fetch_array($risultatogg))
    {
        
    $option .= '<option value="'.$rowgg['valore'].'">' $rowgg['scritta'] . '</option>'
    }
    echo 
    '<select name="incremento" onchange="validami(this, 7)"></option>' $option '</select>';  
        
    ?>
            
            <input type="button" value="calcola" name="calcola" onclick="dateAdd()">
            <input type="text" value="" name="datafinale" size="10">
                
            </td>
    I valori del campo select vengono richiamati da una tabella del db.
    Il valore che mi interessa è l'ultimo (l'ottavo) che ha come value 0 quindi ho inserito

    onchange="validami(this, 7)

    Ma non avviene niente.
    Cosa sbaglio?

    Grazie

  4. #4
    Un po' tutto:

    se leggo questa riga

    echo '<select name="incremento" onchange="validami(this, 7)"></option>' . $option . '</select>';

    mi viene da dirti: l'output html lo hai visto? tu apri una select e chiudi una option e poi apri una option e poi chiudi la select

  5. #5
    inoltre, perchè hai cambiato
    sel.form.
    in
    sel.myform
    ?

    Ti avevo segnalato che i campi da cambiare erano foo2 e foo3

  6. #6
    Ogni oggetto javascript che appartiene ad una form, può risalire alla sua form tramite la parola chiave:
    form

    se la cambi, non è più parola chiave ma qualcos' altro.

    Inoltre se il tuo ciclo in php è suscettibile di aggiungere altre opzioni, o toglierne, in futuro, e tu sei sicuro che quella che deve innescare sempre il comportamento sarà sempre l' ultima, si può generalizzare la funziona in modo da prescindere dall' index, a patto che la option in questione sia sempre sfornata dal tuo php come ultima.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    Originariamente inviato da TrueLies
    Ogni oggetto javascript che appartiene ad una form, può risalire alla sua form tramite la parola chiave:
    form

    se la cambi, non è più parola chiave ma qualcos' altro.

    Inoltre se il tuo ciclo in php è suscettibile di aggiungere altre opzioni, o toglierne, in futuro, e tu sei sicuro che quella che deve innescare sempre il comportamento sarà sempre l' ultima, si può generalizzare la funziona in modo da prescindere dall' index, a patto che la option in questione sia sempre sfornata dal tuo php come ultima.
    ho cambiato myform in form com'era nel tuo script e adesso funziona. Scusami non sapevo che fosse parola chiave..di javascript so quasi nulla

    Per quanto riguarda la select non dovrei modificare ed aggiungere nulla in futuro (bastano pochi secondi ad adattarla, credo).
    In ogni caso mi interessa questa generalizzazione della funzione a prescindere dall'index (con option interessato sempre ultimo ovviamente)....non si sa mai in futuro.
    Come si ottiene?

    Grazie gentilissimo comunque.
    Buonanotte.

  8. #8
    per farlo basta che la riga che dice:

    if(sel.selectedIndex==index){


    la sostituisci con:

    if(sel.selectedIndex==sel.options.length-1){

    ps a quel punto puoi rimuovere "index" dagli argomenti

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    Originariamente inviato da TrueLies
    per farlo basta che la riga che dice:

    if(sel.selectedIndex==index){


    la sostituisci con:

    if(sel.selectedIndex==sel.options.length-1){

    ps a quel punto puoi rimuovere "index" dagli argomenti
    Ottimo, grazie ancora.

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.