Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135

    Sintassi valida in un campo del form

    Ciao a tutti; ho fatto una ricerca ma non ho trovato nulla.
    Come faccio ad imporre, quando si riempie un campo di un form, un determinato numero e combinazione di numeri e lettere?

    Dovrei avvisare l'utente quando inserisce nel campo del form una sintassi diversa da:
    codice:
    DM001XX0YYY
    in cui le variabili sono X e Y che sono dei numeri; gli altri caratteri sono invece obbligatori.

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    codice:
    var str = document.NOMEFORM.NOMECAMPO.value;
    
    if(!str.match(/^DM001\d{2}0\d{3}$/) {
      alert("input non corretto");
      document.NOMEFORM.NOMECAMPO.focus();
      return false;
    }
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Grazie, ma non riesco a farlo funzionare... :master:
    codice:
     <script language="JavaScript" type="text/JavaScript">
    <!--
    function convalidaForm(Qform) 
    {
      
      for (var a = 0; a < Qform.elements.length; a++) 
    	{
    	var campo = Qform.elements[a];
    
          	if ((campo.value == '') || (campo.value == 'undefined')) 
    		{
            	window.alert('Il campo ' + campo.name +'\nè un campo obbligatorio in questo form.');
            	campo.focus();
            	return false;
            	       	     	
          		}
          	    		    		
          		var str = document.Qform.codicealfanumerico.value;
    
    if(!str.match(/^DM001\d{2}0\d{3}$/) {
      alert("input non corretto");
      document.Qform.codicealfanumerico.focus();
      return false;
    }
      }
    
       return(true);
    }
     
    //-->
    </script>

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Se la variabile passata alla funzione e` l'oggetto form, e` sbagliata l'implementazione.

    deve essere :
    var str = Qform.codicealfanumerico.value;

    Cosi` ad occhio c'e` anche un errore di logica del flusso: mettere quel codice dentro il loop non ha molto senso.

    Attenzione che return(true) e` sintassi proprietaria. la sintassi corretta e`:
    return true;
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Grazie, ma non va lo stesso... in sostanza devo controllare che tutti i campi del form siano compilati ed in più controllare la sintassi del campo codicealfanumerico:
    codice:
    <script language="JavaScript" type="text/JavaScript">
    <!--
    function convalidaForm(Qform) 
    {
       
      for (var a = 0; a < Qform.elements.length; a++) 
    	{
    	var campo = Qform.elements[a];
    
          	if ((campo.value == '') || (campo.value == 'undefined')) 
    		{
            	window.alert('Il campo ' + campo.name +'\nè un campo obbligatorio in questo form.');
            	campo.focus();
            	return false;
       	
          		}
          	
     var str = Qform.codicealfanumerico.value;
    
    if(!str.match(/^DM001\d{2}0\d{3}$/) 
    {
      alert("input non corretto");
      Qform.codicealfanumerico.focus();
      return false;
    }	
    
     }
     
      // Abilita l'invio del FORM
      return true;
    }
    
    //-->
    </script>

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non hai corretto l'errore di flusso del programma (non ha snso testare quel campo tutte le volte che testi un altro campo nel loop).

    E poi dire "non funziona" non e` un buon modo per trovare i problemi.

    Almeno devi dire se non va quando il campo e` compilato correttamente o quando c'e` una digitazione sbagliata.

    E fatti visualizzare (con alert) la stringa prima del test.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Scusa tanto ma non riesco a seguirti... l'errore è che non controlla più nemmeno che gli altri campi siano compilati... ossia se invio il form con tutti i campi vuoti, passa direttamente a
    codice:
    <form name="Qform" method="POST" action="processaform.asp" onsubmit="return(convalidaForm(this));">

  8. #8
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    adesso funziona, ma la sintassi esatta è la seguente (per il controllo del campo codicealfanumerico) :
    codice:
    var re = new RegExp("/^DM001\d{2}0\d{3}$/", "");
      if (!Qform.codicealfanumerico.value.match(re))
        {
          alert("Il campo non ha una sintassi valida !");
          Qform.codicealfanumerico.focus();
          Qform.codicealfanumerico.select();
     
          // Invio del FORM abortito
          return(false);
        } 
      // Abilita l'invio del FORM
      return(true);
      
    }
    ma il controllo sulla sintassi non funziona, infatti quando inserisco:
    codice:
    DM001230528
    che è una sintassi valida, non me la convalida....

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Questa sintassi o l'altra sono equivalenti (quasi).
    Anzi nella tua sintassi c'e` un errore nell'uso dell'oggetto RegExp: il .match() si aspeta una stringa, non una RegExp.

    Il problema e` che l'avevi inserita dentro il loop. (e lo puoi vedere anche dal fatto che le indentazioni non seguivano un flusso corretto).


    Edit: comunque devi controllare cosa arriva al JS prima di fare l'if. Occorre sgomberare il campo da possibili errori che non c'entrano con questo codice.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  10. #10
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da Mich_
    Questa sintassi o l'altra sono equivalenti (quasi).

    Il problema e` che l'avevi inserita dentro il loop. (e lo puoi vedere anche dal fatto che le indentazioni non seguivano un flusso corretto).
    Ok, grazie ho capito, ma perchè non convalida la sintassi????

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 © 2026 vBulletin Solutions, Inc. All rights reserved.