Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 31
  1. #11
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    No, cosi` crei casino e basta.

    = nel mio script (e anche in quello tuo precedente) e` un'assegnazione. Tu la hai fatta diventare un confronto.

    Ma la variabile match ti serve sotto!! Non puoi evitare di assegnarla.

    Eventualmetne puoi fare (equivalente al mio):

    match = DateString.match(RE[DateFormat]);
    if(!match) return false;
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  2. #12
    ok ora provo... è che mi dava errore su quella linea...

  3. #13
    ... aggiungendo delle parentesi non mi da più errore, e fa il controllo, ma mi restituisce sempre falese (anche se questa volta supera l'if).
    codice:
    function verifyDateFormat(DateString, DateFormat) {
      var match;
      var tmpDate;
      var gg='',mm='',aa='';
    
      var RE = new Array();
      RE['it'] = /^([0-3]\d)[\/\.]([01]\d)[\/\.](\d{4})$/
      RE['en'] = /^([01]\d)[\/\.]([0-3]\d)[\/\.](\d{4})$/
      RE['gen'] = /^(\d{4})[\/\.]([01]\d)[\/\.]([0-3]\d)$/
    
      if(!(match=DateString.match(RE[DateFormat]))) {
        return false;
      }
      alert("punto 1");
      switch(DateFormat) {
        case "it":
          gg = match[0];
          mm = parseInt(match[1])-1;
          aa = match[2];
          break;
        case "en":
          mm = parseInt(match[0])-1;
          gg = match[1];
          aa = match[2];
          break;
        case "gen":
          aa = match[0];
          mm = parseInt(match[1])-1;
          gg = match[2];
          break;
      }
      tmpDate = new Date(aa, mm, gg);
      return (tmpDate.getMonth()+1==mm) && (tmpDate.getDate()==gg) && tmpDate.getFullYear()==aa;
    }
    
    var a="31/12/2004";
    alert(verifyDateFormat(a, "it") );
    Ho inserito un alert per verificare fino a dove arriva lo script

  4. #14
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    OK, un passo alla vota andiamo avanti.

    Allora bisogna spezzare le righe multiple e trovare l'inghippo.

    1. al posto dell'if, mettici le due righe che proponevo sopra:

    var match = DateString.match(RE[DateFormat]);
    alert ("punto 10 - match="+match);
    if(!match) return false;

    alert("punto 20");


    2. Se non funziona, potrebbe essere che non accetta le variabili al posto della RE: prova a sostituire la RE compatibile con l'input dato (serve anche per verificare le singole stringhe delle RE).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #15
    lo avevo già fatto con la riga
    codice:
    alert("punto 1");
    e se la data è corretta supera l'if e mi apre l'alert. Il problema è dopo.

  6. #16
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Scusa non avevo capito.
    Allora i problemi piu` complessi sono risolti.

    metti un alert in fondo, prima del return di questo tipo:

    alert("punto30 "+tmpDate.toLocaleString());

    Vedi se la data nell'alert coincide con la data impostata.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #17
    mi da:

    Punto 30 NaN

  8. #18
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Sei sicuro di aver messo l'alerto dopo la definizione della variabile?

    Aggiungi anche:
    alert("punto29 "+aa+" "+mm+" "+gg);

    Le variabili sono scritte correttamente?
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #19
    codice:
    function verifyDateFormat(DateString, DateFormat) {
      var match;
      var tmpDate;
      var gg='',mm='',aa='';
    
      var RE = new Array();
      RE['it'] = /^([0-3]\d)[\/\.]([01]\d)[\/\.](\d{4})$/
      RE['en'] = /^([01]\d)[\/\.]([0-3]\d)[\/\.](\d{4})$/
      RE['gen'] = /^(\d{4})[\/\.]([01]\d)[\/\.]([0-3]\d)$/
    
      if(!(match=DateString.match(RE[DateFormat]))) {
        return false;
      }
    
      switch(DateFormat) {
        case "it":
          gg = match[0];
          mm = parseInt(match[1])-1;
          aa = match[2];
          break;
        case "en":
          mm = parseInt(match[0])-1;
          gg = match[1];
          aa = match[2];
          break;
        case "gen":
          aa = match[0];
          mm = parseInt(match[1])-1;
          gg = match[2];
          break;
      }
      tmpDate = new Date(aa, mm, gg);
    
    alert("punto29 "+aa+" "+mm+" "+gg); 
    alert("punto30 "+tmpDate.toLocaleString());
    
      return (tmpDate.getMonth()+1==mm) && (tmpDate.getDate()==gg) && tmpDate.getFullYear()==aa;
    }
    
    var a="31/12/2004";
    alert(verifyDateFormat(a, "it") );
    l'alert tira fuori una cosa strana:
    "Punto29 12 30 31/12/2004"

  10. #20
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non cosi` strana come puo` sembrare.

    Anzitutto occorre agiungere un g alla fine di ogni RE, dopo l'ultima / (il match deve essere globale).

    Vedi se funziona, o se mi sono dimenticato qualcos'altro.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.