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

    Dinamicizzare disabled sul submit.

    Ho un form con 32 input.
    Vorrei, in apertura pagina, porre il submit del form a disabled ed abilitarlo solamente se l'utente digita un valore differente da questi, su almeno uno dei 32 campi:

    "0.0" - "000" - ".00" - "00." - "..." - "..0" - "0.." - ".0."

    Stavo provando a fare una funzioncina JS associata all'onchange dell'input nella seguente maniera:

    sul campo
    codice:
    <input name="voto<%=Voto%>" type="text" class="prova" maxlength="3" size="2" onChange="abilitaVoto(this);" value="0.0" onFocus="this.value='';">
    mentre la funzione
    codice:
    function abilitaVoto(str) {
    
    var valore=Trim(str.value);
    
    for (i=0; i<valore.length; i++)
    	if ((document.pagelle.voto[i].value!="0.0") ||
    		(document.pagelle.voto[i].value!="000") ||		
    		(document.pagelle.voto[i].value!=".00") ||				
    		(document.pagelle.voto[i].value!="00.") ||
    		(document.pagelle.voto[i].value!="...") ||								
    		(document.pagelle.voto[i].value!="..0") ||
    		(document.pagelle.voto[i].value!="0..") ||
    		(document.pagelle.voto[i].value!=".0.")) 
    		   document.pagelle.registra.disabled=false;
    }
    Ma a parte darmi un errore del tipo "document.pagelle.voto è nullo o non è un oggetto" in quanto probabilmente non carica l'indice corretto associato al campo in cui sto digitando, non funziona minimamente l'abilita/disabilita submit.

    Altra cosa, il disabled di partenza, ovvero al caricamento della pagina, devo settarlo sul tag del submit o no???

    Confido nel vostro aiuto, grazie.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    3,259
    beh... quella funzione Trim puzza tanto di lato server e poco di js...

  3. #3
    Piccola variante.

    codice:
    <input name="voto<%=Voto%>" type="text" class="prova" maxlength="3" size="2" onChange="abilitaVoto('voto<%=Voto%>');" value="0.0" onFocus="this.value='';">
    P.S.:L'input sta dentro un ciclo while di asp in cui la variabile Voto viene incrementata ogni volta di uno.

    Ora il problema me lo restituisce sulla funzione JS.

    codice:
    function abilitaVoto(voto) {
    
    var valore=Trim(voto.value);
    
    for (i=0; i<valore.length; i++)
    	if ((document.pagelle.voto[i].value!="0.0") ||
    		(document.pagelle.voto[i].value!="000") ||		
    		(document.pagelle.voto[i].value!=".00") ||				
    		(document.pagelle.voto[i].value!="00.") ||
    		(document.pagelle.voto[i].value!="...") ||								
    		(document.pagelle.voto[i].value!="..0") ||
    		(document.pagelle.voto[i].value!="0..") ||
    		(document.pagelle.voto[i].value!=".0.")) 
    		   document.pagelle.registra.disabled=false;
    }
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    3,259
    prova a seguire una strada del genere...

    - una funzione senza argomenti
    - attivata alla perdita di focus (onBlur) di ogni campo
    - ciclo su tutti i campi, se si chiamano voto1,voto2 ecc. fai

    document.scuola["voto"+i].value


    e controlli che sia diverso da tutte le tue cosette...

    ti metti una variabile e la chiami "stato" settandola "disabled" (prima nel ciclo), se un campo passa il controllo if, setti stato a "" e fai uno stop sul for (per risparmiare lavoro)
    alla fine, fai

    document.scuola.bottone.disabled=(stato=="disabled "?true:false)


    che dici?

  5. #5
    ecco la funzione:

    codice:
    <script language="JavaScript">
    
    var no=new Array("0.0", "000", ".00", "00.", "...", "..0", "0..", ".0.");
    
    function Controllo(f) {
     e=f.elements;
     for (i=0; i<e.length; i++)
      if (e[i].type=="text")
      for (j=0; j<no.length; j++)
       if (no[j]!=e[i].value) continue;
       else {
        f.nomesubmit.disabled=true;
        return;
       }
     f.nomesubmit.disabled=false;
    }
    
    </script>
    la chiamata:

    codice:
    <input type="text" name="textfield" onKeyUp="Controllo(this.form);">
    ciao

  6. #6
    X Var: onKeyUp è compatibile con NN?

    Altra cosa, il tag del submit deve essere settato a disabled=true???
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  7. #7
    Comunque var la tua funzione non va...:nonso
    Non viene eseguita, non capisco.

    Io credo che questa basti sistemarla un po' e può andare bene....ci lavoro su, intanto se anche voi mi suggerite delle dritte, non sarebbe male.

    codice:
    function abilitaVoto(voto) {
    
    var valore=Trim(voto.value);
    
    for (i=0; i<valore.length; i++)
    	if ((document.pagelle.voto[i].value!="0.0") ||
    		(document.pagelle.voto[i].value!="000") ||		
    		(document.pagelle.voto[i].value!=".00") ||				
    		(document.pagelle.voto[i].value!="00.") ||
    		(document.pagelle.voto[i].value!="...") ||								
    		(document.pagelle.voto[i].value!="..0") ||
    		(document.pagelle.voto[i].value!="0..") ||
    		(document.pagelle.voto[i].value!=".0.")) 
    		   document.pagelle.registra.disabled=false;
    }
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  8. #8
    ecco la pagina completa:

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Documento senza titolo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    
    <script language="JavaScript">
    
    var no=new Array("0.0", "000", ".00", "00.", "...", "..0", "0..", ".0.");
    
    function Controllo(f) {
     e=f.elements;
     for (i=0; i<e.length; i++)
      if (e[i].type=="text")
      for (j=0; j<no.length; j++)
       if (no[j]!=e[i].value) continue;
       else {
        f.nomesubmit.disabled=true;
        return;
       }
     f.nomesubmit.disabled=false;
    }
    
    </script>
    
    </head>
    
    <body>
    <form name="f">
    <input type="text" name="textfield" onKeyUp="Controllo(this.form);">
    
    
    <input type="submit" name="nomesubmit" disabled value="Invia">
    </form>
    </body>
    </html>
    fammi sapere.

  9. #9
    Considera che gli input da me sono 32 e sono generati dimanicamente lato ASP.
    Non è uno solo...
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  10. #10
    Originariamente inviato da maximum
    Considera che gli input da me sono 32 e sono generati dimanicamente lato ASP.
    Non è uno solo...;)
    il mio script è general purpose, tranqui. ;)

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.