Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499

    Controllo compilazione date/ora e passaggio form

    Ciao Ragazzi mi hanno dato da usare questi due script:
    codice:
    <script language="javascript">
    
    <!-- 
    function submitIt(Qform)
    { 
    
    var re = new RegExp("^([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})$", "");
    var dt = Qform.data.value.match(re);
     
      if (!dt ||                      // formato non valido
          dt[1] < 1 || dt[1] > 31 ||  // giorno non corretto
          dt[2] < 1 || dt[2] > 12 ||  // mese non corretto
          dt[3] < 4)                  // anno non corretto (minore del 2004)
        {
          alert("La data inserita non è corretta.\nInserire la data nel formato GG/MM/AAAA");
          Qform.data.focus();
          Qform.data.select();
          return(false);
        }
    
    // Abilita l'invio del FORM  
    return(true);
    
    } 
    //-->
    </script>
    <script language="javascript">
    
    <!-- 
    function mcOra(orain){ 
    var intime=orain; 
    if (intime.match(/^[01][0-9]|2[0-3]\.[0-5][0-9]$/)) { 
    return true; 
    } 
    alert('Orario non valido'); 
    return false; 
    } 
    //-->
    </script>
    Di seguito nel mio form c'è:
    codice:
    <form action="data2.asp" method="post" onsubmit="return(isValidDates(this));">
    <input name="DataIn" type="text"> 
    <input name="OraIn" type="text">
    <input type="submit" name="Submit" value="Submit">
    </form>
    Gli script sono scritti in modo corretto?
    Come lego i due campi input ai due script?

    Vi ringrazio

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Subito un errore:
    le slash della RegExp devono essere precedute da backslash

    Poi la prima funzione gia` e` chiamata al submit. La seconda puoi chiamarla dalla prima: sostituisci al posto del return true:
    return mcOra(Qform.orain);
    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 semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Cosa sono le slash della RegExp?
    Ok per il form...
    Ma il fatto che non funzioni dipende queste backslash?

    Provo a riverificare il tutto!!!

  4. #4
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Ora ho cosi:
    codice:
    <!-- 
    function submitIt(Qform)
    { 
    
    var re = new RegExp("^([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})$", "");
    var dt = Qform.data.value.match(re);
     
      if (!dt ||                      // formato non valido
          dt[1] < 1 || dt[1] > 31 ||  // giorno non corretto
          dt[2] < 1 || dt[2] > 12 ||  // mese non corretto
          dt[3] < 4)                  // anno non corretto (minore del 2004)
        {
          alert("La data inserita non è corretta,\noppure è stata scritta in modo errato.\nInserire la data nel formato GG/MM/AAAA");
          Qform.data.focus();
          Qform.data.select();
          return(false);
        }
    
    // Abilita l'invio del FORM  
    return mcOra(Qform.orain); 
    
    } 
    //-->
    </script>
       
    <script language="javascript">
    <!-- 
    function mcOra(orain){ 
    var intime=orain; 
    if (intime.match(/^[01][0-9]|2[0-3]\.[0-5][0-9]$/)) { 
    return true 
    } 
    alert('Orario non valido'); 
    return false; 
    } 
    //-->
    
    </script>
    
    <form action="data2.asp" method="post" onsubmit="return(submitIt(this)); ">
    <input name="data " type="text">
    <input name="orain " type="text">
    Quando clicco ok il campo data viene controllato, quello ora invece non funziona. Non escono messaggi di errore.
    Non ho capito bene il discorso dei backslash nelle espressioni! :master:

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ma dove vivi? non hai una tastiera sul tuo computer?

    / = slash
    \\ = backslash

    Chiaramente se la prima RegExp e` sbagliata tutto lo script non puo` funzionare.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Se non conosco questo linguaggio faccio a faica a comprendere cos'è un regexp... per questo chiedevo. So perfettamente la differenza tra / e \, volevo solo sapere dove metterle

    Quindi ora cambio tutte le / e metto \\
    Vediamo che succede :master:

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    No devi mettere una backslash davanti a ciascuna slash.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Ora è cosi:
    codice:
    function submitIt(Qform)
    { 
    
    var re = new RegExp("^([0-9]{1,2})(/\([0-9]{1,2})(/\([0-9]{4})$", "");
    var dt = Qform.data.value.match(re);
     
      if (!dt ||                      // formato non valido
          dt[1] < 1 || dt[1] > 31 ||  // giorno non corretto
          dt[2] < 1 || dt[2] > 12 ||  // mese non corretto
          dt[3] < 4)                  // anno non corretto (minore del 2004)
        {
          alert("La data inserita non è corretta,\noppure è stata scritta in modo errato.\nInserire la data nel formato GG/MM/AAAA");
          Qform.data.focus();
          Qform.data.select();
          return(false);
        }
    
    // Abilita l'invio del FORM  
    return mcOra(Qform.orain);
    
    } 
    //-->
    </script>
       
    <script language="javascript">
    <!-- 
    function mcOra(orain){ 
    var intime=orain; 
    if (intime.match(/\^[01][0-9]|2[0-3]\.[0-5][0-9]$(/\)) { 
    return true 
    } 
    alert('Orario non valido'); 
    return false; 
    } 
    //-->
    
    </script>
    <form action="data2.asp" method="post" name="Qform" id="Qform" onsubmit="return(submitIt(this));">
    
    <input name="data" type="text">
    <input name="orain" type="text">
    Il campo data viene controllato lo stesso anche se ho messo le \ dopo le /.
    Al campo ora non funziona lo stesso il controllo. :master:

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ma sei capace di leggere???
    DAVANTI non vuol dire dietro.
    codice:
    var re = new RegExp("^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$", "");
    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 semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    si ho provato lo stesso sia con \/ e con /\, ma la parte della data funziona in tutti e due i casi!!!

    E' sempre quello dell'ora che non va!!! anche se metto \/ o /\

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.