Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087

    cambiare attributo disabled

    ho questo script che al solo checked o onfocus di un input radio dovrebbe attivare un textarea
    codice:
                             function rendiAttivo()    {
      var inpt = window.document.getElementsByTagName('input');
          for(var i = 0; i < inpt.length; i++) {
              if(inpt[i].type == "radio" && inpt[i].checked)  {	  
         window.document.getElementById('textarea')[0].disabled = FALSE ;
    	 break;
              }
            }
         }
    e questa è la struttura della form
    codice:
     <form> 
    <input type="radio" name="nomeRadio" value="val1" onFocus="rendiAttivo()">Nome1
     
    <input type="radio" name="nomeRadio" value="val2" onFocus="rendiAttivo()">Nome2
    
    <input type="radio" name="nomeRadio" value="val3" onFocus="rendiAttivo()">Nome3
     
    
    <input type="text" name="area" value="val_text" >
    
    <textarea disabled id="qualsiasi" name="attiva" cols=45 rows=1 >massimo 38 battute</textarea>
    
    
    
    <input type="reset" value="annulla" />
    </form>
    non funziona nè con firefox nè con IE

  2. #2
    ciao, hai provato con "false" al posto di "FALSE" (JavaScript è case sensitive). in ogni caso, che errore ti viene notificato?

    saluti

  3. #3
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    il problema è nessun errore. tu hai provato il mio codice?
    ho fatto il seguente script per vedere se le informazioni vengono passate al document.
    con nfirefox le document.write in fondo passano DOPO aver fatto il refresh, con IE non passano
    codice:
    <html>
    <head>
    <title>Form_attiva_sezione _2.html</title> 
    <script type="text/javascript"> 
             window.onload = function() {
                        rendiAttivo() 
    					}
    
                        function rendiAttivo()    {
      var inpt = window.document.getElementsByTagName('input');
          for(var i = 0; i < inpt.length; i++) {
              if(inpt[i].type == "radio" && inpt[i].checked)  {	  
         window.document.getElementById('textarea')[0].disabled = FALSE ;
    	 break;
    		    }
              }
    	  }
    	 
    </script>
    </head>
    <body > 
    
    
    
    
    <form> 
    <input type="radio" name="nomeRadio" value="Bruce Springsting" onFocus="rendiAttivo()">Nome1
     
    <input type="text" name="area" value="Bruce Springsting" >
    
    <input type="radio" name="nomeRadio" value="nome2" onFocus="rendiAttivo()">Nome2 
    
    <input type="radio" name="nomeRadio" value="nome3" onFocus="rendiAttivo()">Nome3 
    
    
    <textarea disabled id="qw" name="attiva" cols=45 rows=1 >massimo 38 battute</textarea>
    
    
    <input type="reset" value="annulla" />
    </form>
    
    <script type="text/javascript"> 
             window.onload = function() {
                        rendiAttivo() 
    					}
    
                        function rendiAttivo()    {
      var input = window.document.getElementsByTagName('input');
          for(var i = 0; i < input.length; i++) {
    
        if(input[i].type == "radio") {
    	  if( input[i].checked)  {
         window.document.getElementById('textarea')[0].disabled = FALSE ;
    	 break;
    		    }
              }
    	  } }
    	 
    </script>
    
    <hr />
    <script type="text/javascript"> 
    var inpt = document.getElementsByTagName('input');
    document.write(inpt.length);
    document.write("
    ");
          
        for(var i = 0; i < inpt.length; i++) {
           if(inpt[i].type == "radio")  {
    	      document.write(inpt[i].type + "
    ");
    	         if(inpt[i].checked) {
    	           document.write("evviva 
    ");
    	         }
    	    }
        }
    document.write("
    ");	
    	   document.write(document.getElementsByTagName('textarea')[0].value);
    document.write("
    ");	   
    	   document.write(document.getElementById('qw').disabled);
    document.write("
    ");
    	   document.write(document.getElementsByTagName('input')[0].checked);
    </script>
    </body>
    </html>

  4. #4
    ciao, prova così:

    codice:
    <html>
    <head>
    <title>Form_attiva_sezione _2.html</title> 
    <script type="text/javascript"> 
    
      function rendiAttivo()    {
      var inpt = window.document.getElementsByTagName('input');
          for(var i = 0; i < inpt.length; i++) {
              if(inpt[i].type == "radio" && inpt[i].checked)  {	  
         window.document.getElementById('qw').disabled = false;
    	 break;
    		    }
              }
      }
    	 
    </script>
    </head>
    <body > 
    
    
    
    
    <form> 
    <input type="radio" name="nomeRadio" value="Bruce Springsting" onfocus="rendiAttivo()"/>Nome1
     
    <input type="text" name="area" value="Bruce Springsting"/>
    
    <input type="radio" name="nomeRadio" value="nome2" onfocus="rendiAttivo()"/>Nome2 
    
    <input type="radio" name="nomeRadio" value="nome3" onfocus="rendiAttivo()"/>Nome3 
    
    
    
    <textarea disabled id="qw" name="attiva" cols=45 rows=1 >massimo 38 battute</textarea>
    
    
    <input type="reset" value="annulla"/>
    </form>
    
    <hr />
    </body>
    </html>
    saluti

  5. #5
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    funziona solo con IE e dopdo il refresh
    invece cerco uno script che funzioni con ogni browser e senza ricorrere al refresh
    Per esempio questo codice poco corretto perchè ricorre ai name funziona
    codice:
    <script type="text/javascript">
    
    function rendiAttivo() { 
    piero = document.forms[0];
    for (var i = 0; i < piero.nomeRadio.length; i++) { 
    if (piero.nomeRadio[i].checked) { 
    break;
    } 
    piero.attiva.disabled = false ;
    } 
    } 
    </script>
    </head>
    
    <body > 
    
    <form name="nomeForm"> 
    <input type="radio" name="nomeRadio" value="Bruce Springsting" onFocus = "rendiAttivo()" >Nome1 
    
     
    <input type="radio" name="nomeRadio" value="nome2">Nome2 
    
     
    <input type="radio" name="nomeRadio" value="nome3">Nome3 
    
    
    <input type="text" name="area" value="Bruce Springsting" onFocus = "rendiAttivo()" > 
    
    
    <textarea disabled name="attiva" cols=45 rows=1 >massimo 38 battute</textarea>
    
    
    
     
    
    <input type="reset" value="annulla" /> 
    
    </form>

  6. #6
    ciao, ho testato il mio codice con Firefox (3.0.7) prima di passarmelo, a me funziona.

    saluti

  7. #7
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    per prima cosa grazie per l'aiuto.
    ho provato il tuo codice con IE o con FF di una versione inferiore di quella usata da te, così come Opera la textarea si attiva solo dopo il refresh o un'altro focus.
    Ho cambiato onFocus con onClick e funziona .. così
    codice:
    <html>
    <head>
    <title>Form_attiva_sezione1.html</title> 
    <script type="text/javascript"> 
              window.onload = oncli 
                        function rendiAttivo()    {
      var inpt = document.getElementsByTagName('input');
          for(var i = 0; i < inpt.length; i++) {
              if(inpt[i].type == "radio" && inpt[i].checked)  {	  
                  document.getElementsByTagName('textarea')[0].disabled = false ;
    	      break;
    		  }
            }
    	  }
    	                function oncli()        {
    		var inpt = document.getElementsByTagName('input');
          for(var i = 0; i < inpt.length; i++) {
              if(inpt[i].checked)  {
                   inpt[i].onClick = rendiAttivo;
                }
             }
           }		  
     
    </script>
    </head>
    <body > 
    
    
    <form>
    <input type="radio" name="nomeRadio" value="nome1" onClick="rendiAttivo()">Nome1
     
    <input type="radio" name="nomeRadio" value="nome2" onClick="rendiAttivo()">Nome2 
    
    <input type="radio" name="nomeRadio" value="nome3" onClick="rendiAttivo()">Nome3 
    
    <input type="text" name="area" value="Bruce Springsting" >
    
    
    <textarea disabled id="qw" name="attiva" cols=45 rows=1 >massimo 38 battute</textarea>
    
    
    <input type="reset" value="annulla" />
    </form>
    </body>
    </html>

  8. #8
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    window.document.getElementById('textarea')[0].disabled = FALSE ;


    cos'è?

    codice:
    document.getElementById('textarea').disabled = false ;
    al max prova anche disabled=""
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  9. #9
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    grazie a tutti.
    si avevo fatto un po' di casotto, anche nell'ultimo postato.
    Questo codice funziona.
    codice:
    <html>
    <head>
    <title>Form_attiva_sezione1.html</title> 
    <script type="text/javascript"> 
                        function rendiAttivo()    {
      var inpt = document.getElementsByTagName('input');
          for(var i = 0; i < inpt.length; i++) {
              if(inpt[i].type == "radio" && inpt[i].checked)  {	  
                  document.getElementsByTagName('textarea')[0].disabled = false ;
    	      break;
    	}
              }
    </script>
    </head>
    <body > 
    
    
    <form>
    <input type="radio" name="nomeRadio" value="nome1" onClick="rendiAttivo()">Nome1
     
    <input type="radio" name="nomeRadio" value="nome2" onClick="rendiAttivo()">Nome2 
    
    <input type="radio" name="nomeRadio" value="nome3" onClick="rendiAttivo()">Nome3 
    
    <input type="text" name="area" value="Bruce Springsting" >
    
    
    <textarea disabled id="qw" name="attiva" cols=45 rows=1 >massimo 38 battute</textarea>
    
    
    <input type="reset" value="annulla" />
    </form>
    </body>
    </html>
    Mi sapete dire cosa devo aggiungere affinchè il codice continui a funzionare anche senza scrivere javascript nell'input radio [onClick="rendiAttivo()"]
    tipo p.es.:
    codice:
    if(inpt[i].type == "radio" && inpt[i].checked)  {
                 inpt[i].onClick=qualcosa;
    grazie

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.