Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    855

    controllo data direttamente su campo

    Ciao a tutti,

    ho una funzione che mi controlla il campo data se inserito correttamente

    codice:
    function dataValida(txt){
    	var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
    	if(re.test(txt)){
    		var adata = txt.split('/');
    		var gg = parseInt(adata[0],10);
    		var mm = parseInt(adata[1],10);
    		var aaaa = parseInt(adata[2],10);
    		var xdata = new Date(aaaa,mm-1,gg)
    		if((xdata.getFullYear()==aaaa) && (xdata.getMonth()==mm-1) && (xdata.getDate()==gg))
    			return xdata
    		else return false
    	}else return false
    }
    
    
    if(!dataValida(document.frmInsUsato.txtdatacarico.value)){
      alert('Formato DATA NON VALIDO (gg/mm/anno)')
    document.frmInsUsato.txtdatacarico.focus()
                                            return false
    }
    
    	}

    dato che ho tanti campi data da controllare , vorrei applicare la funzione direttamente al campo input...
    ho provato con onclick="dataValida(this)"
    ma non funziona

    cosa mi consigliate?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    onClick="dataValida(this.value);"
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    855
    funziona pero ho un problema...

    se inserisco 12/ii/oj quando clicco su un'altro punto della pagina non mi dice che la data non è valida... perchè giustamente il comando è sul onclick del campo di testo....

    cosa posso fare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    855
    ... dovrei fare il controllo quando esco dal campo di testo...

    esiste qualche funzione tipo onexit o qualcosa del genere?

    non conosco javascript....

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    onblur="...

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    855
    ok funziona...

    una domanda..
    ho modificato lo script
    codice:
    function dataValida(txt){
    	var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
    	if(re.test(txt)){
    		var adata = txt.split('/');
    		var gg = parseInt(adata[0],10);
    		var mm = parseInt(adata[1],10);
    		var aaaa = parseInt(adata[2],10);
    		var xdata = new Date(aaaa,mm-1,gg)
    		if((xdata.getFullYear()==aaaa) && (xdata.getMonth()==mm-1) && (xdata.getDate()==gg))
    			return xdata
    		else
    			alert("Formato DATA NON VALIDO (gg/mm/anno)");
    			
    		}else
    			alert("Formato DATA NON VALIDO (gg/mm/anno)");
    			
    	}
    ora come faccio ad evere il focus sul campi di testo a cui sto facendo il controllo?

    ho provato con document.forms[0].elements[0].focus()

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    855
    no so se è giusto, ma ho provato con this.focus.... ma non funziona...

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    855
    come faccio a rendere dinamica questa stringa riferita al

    document.frmInsUsato.certificato_medico.focus();


    codice:
    alert("Formato DATA NON VALIDO (gg/mm/anno)");
    document.frmInsUsato.certificato_medico.focus();
    non so come fagli passare il campo...

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    codice:
    function dataValida(obj){
    	var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
    	txt = obj.value;
    	if(re.test(txt)){
    		var adata = txt.split('/');
    		var gg = parseInt(adata[0],10);
    		var mm = parseInt(adata[1],10);
    		var aaaa = parseInt(adata[2],10);
    		var xdata = new Date(aaaa,mm-1,gg)
    		if((xdata.getFullYear()==aaaa) && (xdata.getMonth()==mm-1) && (xdata.getDate()==gg)) {
    			return xdata;
    		}
    	}
    	alert("Formato DATA NON VALIDO (gg/mm/anno)");
    	obj.focus();		
    	return false;
    }
    da richiamare con:

    onblur="dataValida(this);"

    Occhio che se hai due campi data da controllare, e se entrambi sono invalidi e passi dall'uno all'altro si innesca un loop... VVoVe: ergo: non ti conviene forzare il focus

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    855
    grazie mille per l'aiuto


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.