|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
VALIDER UNE DATE ENTRÉE DANS UN INPUT TEXT SANS AJOUTER DE SÉPARATEURS : JMAA, JMAAAA ETC...
Description
Valider une date entrée dans un input text sous la forme : jmaa, jmaaaa, jmmaa, jmmaaaa, jjmaa, jjmaaaa, jjmmaa, ou bien jjmmaaaa et qui est supérieure ou égale au 01/01/1800. Normalement fonctionne sous IE, sous NS pas testé... REMARQUE(S) : 1. L'utilisation de séparateurs (- / _ etc...) est facultative.
Source
- function date_valid(iText)
- {
- iVal = iText.value;
-
- regT = new Array(
- /^([1-9])\D?([1-9])\D?((18|19|20)?\d{2})$/, // ex : 5 5 1800, 1 1 2002 (05-05-1800, 01-01-2002)
- /^([1-9])\D?(1[0-2])\D?((18|19|20)?\d{2})$/, // ex : 5 11 1800, 1 10 2002 (05-11-1800, 01-10-2002)
- /^([1-3]0)\D?([1-9])\D?((18|19|20)?\d{2})$/, // ex : 10 3 2001, 30 6 1911 (10-03-2001, 30-06-1911)
- /^(0[1-9]|[1-3][1-9])\D?([1-9])\D?((18|19|20)?\d{2})$/, // ex : 09 3 2001, 31 6 1911 (09-03-2001, 31-06-1911)
- /^(0[1-9]|[1-3][0-9])\D?(0[1-9]|1[0-2])\D?((18|19|20)?\d{2})$/ // ex : 10 02 2000, 39 12 1999 (10-02-2000, 39-12-1999)
- );
-
- if(iVal)
- {
- isReg=false;
- for(i=0; i<regT.length; i++)
- if( isReg = regT[i].test(iVal) )
- {
- regT[i].exec(iVal);
- break;
- }
-
- if(isReg)
- {
- d = RegExp.$1; m = RegExp.$2; y = RegExp.$3;
- theDate = new Date();
- if(d.length==1) d = '0'+d; if(m.length==1) m = '0'+m;
- if(y.length==2) y = ( y > String(theDate.getYear()).substr(2,2) ) ? '19'+y : '20'+y;
- iText.value = d+'-'+m+'-'+y;
-
- mT = new Array("janvier","février","mars","avril","mai","juin",
- "juillet","août","septembre","octobre","novembre","décembre");
-
- reg = /^(0?[1-9]|[1-3][0-9])\D?(0?[1-9]|1[0-2])\D?((18|19|20)\d{2})$/;
- reg.exec(iText.value);
- if( parseInt(RegExp.$1) > nbJMonth(RegExp.$3,RegExp.$2) )
- {
- alert('LA DATE ENTRÉE N\'EXISTE PAS...il y a '+nbJMonth(RegExp.$3,RegExp.$2)+' jours pour le mois de '+mT[RegExp.$2-1]+' ('+RegExp.$3+').');
- iText.value = '-'+RegExp.$2+'-'+RegExp.$3;
- iText.focus(); return;
- }
- }
- else
- {
- alert('FORMAT DE DATE ERRONÉ...\n\nLes formats valides sont :\n\tjmaa\n\tjmaaaa\n\tjmmaa\n\tjmmaaaa\n\tjjmaa\n\tjjmaaaa\n\tjjmmaa\n\tjjmmaaaa \net où l\'année est supérieure à 1800.\n\n\nREMARQUE(S) :\n1. L\'utilisation de séparateurs (- \/ _ etc...) est facultative.');
- iText.focus(); return;
- }
- }
- }
-
- function isBissext(theY) { return ( theY % 4 == 0 && (theY % 100 !=0 || theY % 400 ==0) ); }
- function nbJMonth(theY,theM)
- {
- jpm = ['',31,[28,29],31,30,31,30,31,31,30,31,30,31];
- theM = parseInt(theM);
- if(theM==2) return isBissext(theY) ? jpm[theM][1] : jpm[theM][0];
- else return jpm[theM];
- }
function date_valid(iText)
{
iVal = iText.value;
regT = new Array(
/^([1-9])\D?([1-9])\D?((18|19|20)?\d{2})$/, // ex : 5 5 1800, 1 1 2002 (05-05-1800, 01-01-2002)
/^([1-9])\D?(1[0-2])\D?((18|19|20)?\d{2})$/, // ex : 5 11 1800, 1 10 2002 (05-11-1800, 01-10-2002)
/^([1-3]0)\D?([1-9])\D?((18|19|20)?\d{2})$/, // ex : 10 3 2001, 30 6 1911 (10-03-2001, 30-06-1911)
/^(0[1-9]|[1-3][1-9])\D?([1-9])\D?((18|19|20)?\d{2})$/, // ex : 09 3 2001, 31 6 1911 (09-03-2001, 31-06-1911)
/^(0[1-9]|[1-3][0-9])\D?(0[1-9]|1[0-2])\D?((18|19|20)?\d{2})$/ // ex : 10 02 2000, 39 12 1999 (10-02-2000, 39-12-1999)
);
if(iVal)
{
isReg=false;
for(i=0; i<regT.length; i++)
if( isReg = regT[i].test(iVal) )
{
regT[i].exec(iVal);
break;
}
if(isReg)
{
d = RegExp.$1; m = RegExp.$2; y = RegExp.$3;
theDate = new Date();
if(d.length==1) d = '0'+d; if(m.length==1) m = '0'+m;
if(y.length==2) y = ( y > String(theDate.getYear()).substr(2,2) ) ? '19'+y : '20'+y;
iText.value = d+'-'+m+'-'+y;
mT = new Array("janvier","février","mars","avril","mai","juin",
"juillet","août","septembre","octobre","novembre","décembre");
reg = /^(0?[1-9]|[1-3][0-9])\D?(0?[1-9]|1[0-2])\D?((18|19|20)\d{2})$/;
reg.exec(iText.value);
if( parseInt(RegExp.$1) > nbJMonth(RegExp.$3,RegExp.$2) )
{
alert('LA DATE ENTRÉE N\'EXISTE PAS...il y a '+nbJMonth(RegExp.$3,RegExp.$2)+' jours pour le mois de '+mT[RegExp.$2-1]+' ('+RegExp.$3+').');
iText.value = '-'+RegExp.$2+'-'+RegExp.$3;
iText.focus(); return;
}
}
else
{
alert('FORMAT DE DATE ERRONÉ...\n\nLes formats valides sont :\n\tjmaa\n\tjmaaaa\n\tjmmaa\n\tjmmaaaa\n\tjjmaa\n\tjjmaaaa\n\tjjmmaa\n\tjjmmaaaa \net où l\'année est supérieure à 1800.\n\n\nREMARQUE(S) :\n1. L\'utilisation de séparateurs (- \/ _ etc...) est facultative.');
iText.focus(); return;
}
}
}
function isBissext(theY) { return ( theY % 4 == 0 && (theY % 100 !=0 || theY % 400 ==0) ); }
function nbJMonth(theY,theM)
{
jpm = ['',31,[28,29],31,30,31,30,31,31,30,31,30,31];
theM = parseInt(theM);
if(theM==2) return isBissext(theY) ? jpm[theM][1] : jpm[theM][0];
else return jpm[theM];
}
Conclusion
Merci d'avance pour vos suggestions d'améliorations, pour les bugs qui peuvent se présenter, etc...
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Sources de la même categorie
Commentaires et avis
|
|