Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    10

    Cerco script per controllo data < 'X'

    Ciao a tutti, ho bisogno di uno script per controllare, in un form, la validità di una data e che questa sia anche minore di 'X', dove X è una data precisa che non cambia mai.

    Ho provato a cercare nel forum qualcosa di simile ma non ho trovato nulla, inoltre io di javascript non so quasi nulla, portate pazienza

    Grazie in anticipo e scusate se questa è l'ennesima richiesta ma veramente tramite la ricerca non ho trovato nulla!

  2. #2
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Per sapere se una qualsiasi stringa di testo è una data:

    codice:
    if (isFinite(Date.parse(miaStringa))) {
    	miaData = new Date(miaStringa); // questa e' la tua data
    	alert("Hai inserito una data valida");
    }
    Per sapere se una data è minore di un'altra:

    codice:
    if (miaData.getTime() < dataX.getTime()) { alert("Hai inserito una data valida"); }
    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    10
    Sei stato chiarissimo! Grazie infinite!

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Figurati :-)

    @Xinod e @br1
    Ho visto che il link per verificare la correttezza di una data in «script / discussioni utili» non è più valido. Che ne dite di aggiornare il thread con questa discussione?

  5. #5
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Da questa discussione è possibile estrarre il codice necessario per verificare che una data immessa in un campo testo sia una data valida e che sia espressa nel formato gg/mm/(aa)aa:

    codice:
    <!doctype html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Esempio</title>
    <script type="text/javascript">
    	// le seguenti righe di codice sono necessarie per rendere lo script compatibile con i vecchi browser; possono essere rimosse senza danno per i nuovi browser.
    	if (!Array.prototype.every) {
    		Array.prototype.every = function(fValidator /*, oThisObj */) {
    			"use strict";
    			if (this === void 0 || this === null) { throw new TypeError(); }
    			var aThisArray = Object(this);
    			var nLength = aThisArray.length >>> 0;
    			if (typeof fValidator !== "function") { throw new TypeError(); }
    			var oThisObj = arguments[1];
    			for (var iIndex = 0; iIndex < nLength; iIndex++) { if (iIndex in aThisArray && !fValidator.call(oThisObj, aThisArray[iIndex], iIndex, aThisArray)) { return false; } }
    			return true;
    		};
    	}
    	// fine delle righe di codice per la compatibilità
    
    	function validateForm() {
    		var iDateSegm, aInputDate = document.myForm.dateField.value.split("\/"), nInDateLen = aInputDate.length;
    		if (nInDateLen !== 3) { alert("Inserire una data nel formato gg\/mm\/(aa)aa"); return false; }
    		else {
    			for (var iSegmId = 0; iSegmId < nInDateLen; iSegmId++) {
    				iDateSegm = aInputDate[iSegmId];
    				if (/\D/.test(iDateSegm)) { alert("La data pu\u00F2 contenere solo numeri separati da \"\/\"."); return false; }
    				else { aInputDate[iSegmId] = parseFloat(iDateSegm); }
    			}
    			var oParsedDate = new Date(aInputDate[2], aInputDate[1] - 1, aInputDate[0]), aOutputDate = [oParsedDate.getDate(), oParsedDate.getMonth() + 1, oParsedDate.getFullYear()];
    			if (!aOutputDate.every(function (vThisValue, nThisIndex /*, aTheArray */) {
    				if (this[nThisIndex] === vThisValue) { return true };
    				return false;
    			}, aInputDate)) { return confirm("La data immessa \u00E8 stata corretta in " + aOutputDate.join("\/") + ". Confermare se la data corrisponde al valore che si voleva indicare, altrimenti annullare per apportare le dovute modifiche."); }
    			return false;
    			
    		}
    		return true;
    	}
    </script>
    </head>
    
    <body>
    						
    <form method="POST" name="myForm" onsubmit="return(validateForm());">
    Inserire data: <input type="text" name="dateField" id="dateField" /> <input type="submit" value="Invia">
    </form>
    
    </body>
    </html>

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da carlomarx
    Per sapere se una qualsiasi stringa di testo è una data:

    codice:
    if (isFinite(Date.parse(miaStringa))) {
    	miaData = new Date(miaStringa); // questa e' la tua data
    	alert("Hai inserito una data valida");
    }
    sicuro?

    Se testo isFinite(Date.parse('20/20/2010')) mi restituisce true.

    inoltre anche facendo
    new Date(Date.parse('20/20/2010'))

    il costruttore cercherà comunque di rendere valida questa data (il risultato sarà 20 agosto)
    ma non significa che la data di partenza sia valida

    ad es. se scrivo new Date(Date.parse('3/32/2010')) (32 Marzo) il risultato sarà Date {Thu Apr 01 2010 00:00:00 GMT+0200 (CET)} (1 aprile)
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da fcaldera
    sicuro?

    Se testo isFinite(Date.parse('20/20/2010')) mi restituisce true.
    Sicuro. 20/20/2010 è una data valida in javascript Per sapere se è una data valida a tutti gli effetti basta confrontare la stringa iniziale con la stringa prodotta dall'oggetto Date. Se corrispondono la data è valida non solo in javascript.

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