Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559

    Abilitare campi solo se campi precedenti sono scritti

    Salve a tutti.
    Ho cercato nel forum ma nulla...
    Spiego.
    Ho 10 righe ed in ognuna di esse due campi testo.
    Ad esempio:
    codice:
    <input type="text" name="modello_1" value="" class="txt" size="39" />
    <input type="text" name="dettaglio_1" value="" class="txt" size="39" />
    
    <input type="text" name="modello_2" value="" class="txt" size="39" />
    <input type="text" name="dettaglio_2" value="" class="txt" size="39" />
    
    <input type="text" name="modello_3" value="" class="txt" size="39" />
    <input type="text" name="dettaglio_3" value="" class="txt" size="39" />
    
    ecc...
    Vorrei abilitare i campi modello_X, dettaglio_X solo se entrambi i campi della riga precedente (X-1) sono stati compilati.
    In pratica abilitare la scrittura, ad esempio, dei due campi della seconda riga SOLO se entrambi i campi della prima sono stati compilati.
    E così via fino alla decima.

    Grazie a tutti.

    Roby

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao Roby,

    una cosa veloce potrebbe essere questa
    codice:
    function AbilitaRighe(tt){
    	var numero,abilita,altrovalore
    	if(tt.name.substr(0,7)=='modello'){
    		numero = parseInt(tt.name.substr(8),10)
    		altrovalore = tt.form.elements['dettaglio_'+numero].value
    	}
    	else{
    		numero = parseInt(tt.name.substr(10),10)
    		altrovalore = tt.form.elements['modello_'+numero].value
    	}
    	abilita = (tt.value!='' && altrovalore!='')
    	if(tt.form.elements['dettaglio_'+(numero+1)]){
    		tt.form.elements['dettaglio_'+(numero+1)].readOnly=!abilita
    		tt.form.elements['modello_'+(numero+1)].readOnly=!abilita
    	}
    }
    e poi mettere su tutti i campi di testo
    codice:
    <input type="text" onchange="AbilitaRighe(this)"
    questa soluzione però non è ottimale... se qualcuno torna indietro e cancella qualcosa cosa si deve fare?

  3. #3
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Giusto Willy!
    Se uno torna indietro a più casino di prima... :maLOL:
    Si potrebbe far apparire un alert se uno scrive la terza riga, ad esempio, saltando la seconda...
    Come?

    Roby

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    si potrebbe impostare il readOnly nelle righe precedenti all'ultima scritta
    codice:
    function AbilitaRighe(tt){
    	var numero,abilita,altrovalore
    	if(tt.name.substr(0,7)=='modello'){
    		numero = parseInt(tt.name.substr(8),10)
    		altrovalore = tt.form.elements['dettaglio_'+numero].value
    	}
    	else{
    		numero = parseInt(tt.name.substr(10),10)
    		altrovalore = tt.form.elements['modello_'+numero].value
    	}
    	abilita = (tt.value!='' && altrovalore!='')
    	if(tt.form.elements['dettaglio_'+(numero+1)]){
    		tt.form.elements['dettaglio_'+(numero+1)].readOnly=!abilita
    		tt.form.elements['modello_'+(numero+1)].readOnly=!abilita
    	}
    	abilita = (tt.value!='' || altrovalore!='')
    	if(tt.form.elements['dettaglio_'+(numero-1)]){
    		tt.form.elements['dettaglio_'+(numero-1)].readOnly=abilita
    		tt.form.elements['modello_'+(numero-1)].readOnly=abilita
    	}
    }
    che ne dici?

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Una ne pensi e cento ne fai... :maLOL:

    Roby

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ciao, ho provato l'ultimo che mi hai segnalato ma mi dice:

    form.elements non è un oggetto.

    Il form si chiama "form1", ma anche inserendolo nella funzione non va lo stesso.

    Roby

  7. #7
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    ci saranno problemi nei nomi dei campi... hai cambiato qualcosa? Hai del codice da vedere?

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    I "name" dei campi sono:

    - prodotto_dettaglio_1, prodotto_dettaglio_2,..., prodotto_dettaglio_10

    - prodotto_descrizione_1, prodotto_descrizione_2,..., prodotto_descrizione_10

    Li avevo cambiati ovviamente nella funzione, ma nisba!

    Grazie.

    Roby

  9. #9
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    ho parametrizzato all'inizio della funzione il prefisso del nome dei campi
    codice:
    function AbilitaRighe(tt){
    	prefisso1 = 'prodotto_dettaglio_'
    	prefisso2 = 'prodotto_descrizione_'
    	var numero,abilita,altrovalore
    	if(tt.name.substr(0,prefisso1.length)==prefisso1){
    		numero = parseInt(tt.name.substr(prefisso1.length),10)
    		altrovalore = tt.form.elements[prefisso2+numero].value
    	}
    	else{
    		numero = parseInt(tt.name.substr(prefisso2.length),10)
    		altrovalore = tt.form.elements[prefisso1+numero].value
    	}
    	abilita = (tt.value!='' && altrovalore!='')
    	if(tt.form.elements[prefisso1+(numero+1)]){
    		tt.form.elements[prefisso1+(numero+1)].readOnly=!abilita
    		tt.form.elements[prefisso2+(numero+1)].readOnly=!abilita
    	}
    	abilita = (tt.value!='' || altrovalore!='')
    	if(tt.form.elements[prefisso1+(numero-1)]){
    		tt.form.elements[prefisso1+(numero-1)].readOnly=abilita
    		tt.form.elements[prefisso2+(numero-1)].readOnly=abilita
    	}
    }
    io l'ho provato e funzia... se continua a dare errore ci sarà qualcos'altro
    famme sape'

  10. #10
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Sì funziona. :maLOL:
    Se inizio a scrivere da emerito idiota dalla seconda riga invece che dalla prima mi lascia fare però...

    Roby

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.