begin process at 2010 03 20 17:24:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date & Heure

 > UN CHAMP DE SAISIE DE DATE

UN CHAMP DE SAISIE DE DATE


 Information sur la source

Note :
Aucune note
Catégorie :Date & Heure Classé sous :saisie, date, champs, formulaire, vérification Niveau :Débutant Date de création :23/02/2009 Vu / téléchargé :4 175 / 401

Auteur : guykoumba

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Salut à tous je viens de créer une classe qui permet de créer un champ de type input qui peut permettre de saisir les dates.
J'attends avec impatience vos suggestions et conseils étant donné que je suis débutant dans le domaine et que c'est mon premier source.

Source

  • /****************************************
  • * Champ de saisie de date *
  • *****************************************/
  • /**
  • * idDiv = id du bloc dans lequel le champs sera créé (div,span,td)
  • * classe = la classe css des champs jour,mois année
  • * tabInd = ordre de tabulation dans le formulaire
  • * valeur = valeur par défaut (format jj/mm/aaaa)
  • */
  • function inputdate(idDiv,classe,tabInd,valeur)
  • {
  • this.id=idDiv;
  • this.nom=idDiv;
  • this.cl=classe;
  • this.ti=tabInd;
  • this.value = valeur;
  • this.parent=document.getElementById('__'+idDiv+'__');
  • this.parent.innerHTML='<span id=""></span><span id="'+this.id+'sj"></span><span id="'+this.id+'sx"></span><span id="'+this.id+'sm">'
  • +'</span><span id="'+this.id+'sy"></span><span id="'+this.id+'sa"></span><span id="'+this.id+'spr"></span>';
  • this.afficher();
  • }
  • inputdate.prototype.afficher=function()
  • {
  • tableau=Array("jour","sl1","mois","sl2","annee");
  • tabl=Array("j","x","m","y","a");
  • tablarg=Array("15.8:2","5:1","15.8:2","5:2","31.8:4");
  • d=this.id;
  • leChamp=document.createElement("input");
  • with(leChamp){
  • type="hidden";
  • id=this.id;
  • name=this.id;
  • }
  • this.parent.replaceChild(leChamp,document.getElementById(this.id+'spr'));
  • //this.innerHTML='';
  • for(i=0;i<tableau.length;i++){
  • elmtcourant=tableau[i];
  • eval(tableau[i]+"=document.createElement(\"input\");");
  • eval(tableau[i]+".id='"+this.id+"_"+tabl[i]+"';");
  • eval(tableau[i]+".name='"+this.id+"_"+tabl[i]+"';");
  • eval(tableau[i]+".className='"+this.cl+"';");
  • tlar=tablarg[i].split(":");
  • with(eval(tableau[i]+".style")){
  • border="0px";
  • marginBottom="1px";
  • width=tlar[0]+"px";
  • height='100%';
  • }
  • eval(elmtcourant+".maxLength="+tlar[1]);
  • eval(elmtcourant+".onkeyup = function (){ /*alert('"+this.id+"');*/ keyup('"+this.id+"','"+this.id+"_"+tabl[i]+"')};");
  • eval(elmtcourant+".onblur = function () { /*keyup(d,d+'_"+tabl[i]+"');*/ document.getElementById('"+this.id+"').value=document.getElementById('"+this.id+"_j').value+'/'+document.getElementById('"+this.id+"_m').value+'/'+document.getElementById('"+this.id+"_a').value}");
  • this.parent.replaceChild(eval(tableau[i]),document.getElementById(this.id+'s'+tabl[i])) ;
  • }
  • jour.tabIndex=this.ti;
  • v =new String(this.value);
  • if(v.length == 10){
  • jour.value = v.substr(0,2);
  • mois.value = v.substr(3,2);
  • annee.value = v.substr(6,4);
  • }
  • sl1.value=sl2.value="/";
  • sl1.disabled=sl2.disabled=true;
  • sl1.style.color=sl2.style.color="black";
  • document.getElementById(this.id).value = this.value;
  • }
  • inputdate.prototype.changer = function(val)
  • {
  • dt = this.id;
  • tab_val = val.split('/');
  • document.getElementById(dt+'_j').value = tab_val[0];
  • document.getElementById(dt+'_m').value = tab_val[1];
  • document.getElementById(dt+'_a').value = tab_val[2];
  • document.getElementById(dt).value = val;
  • }
  • function keyup(p,elmtid){
  • /*
  • D'abord puisque nous controlons les champ sur onkeyup,nous vérifions d'abord si le nombre de caractère de chaque champ est atteint
  • et que le caractère saisi est bien un entier.
  • Quand cette condition est vérifier la valeur de ce champ est incorrecte pour les cas suivants:
  • */
  • elmt=document.getElementById(elmtid);
  • if(elmt.value.length==elmt.maxLength){
  • val_j=parseInt(document.getElementById(p+"_j").value,10)
  • val_m=parseInt(document.getElementById(p+"_m").value,10)
  • val=parseInt(elmt.value,10);
  • if(
  • (isNaN(elmt.value))
  • | (elmt.id==p+"_j" & (val<1 | val>31))
  • | (elmt.id==p+"_m" & (val<1 | val>12 | (val==2 & val_j>29) | ((val==4 | val==6 | val==9 | val==11) & val_j==31)))
  • | (elmt.id==p+"_a" & (val_j==29 & val_m==2 & (val % 4)!=0))
  • ){
  • elmt.value='';
  • elmt.focus();
  • }else{
  • if(elmt.id==p+"_j") document.getElementById(p+"_m").focus(); else if (elmt.id==p+"_m") document.getElementById(p+"_a").focus(); else document.getElementById(p+"_j").focus();
  • }
  • }
  • //Effacement des champs
  • if(window.event && (getKeyCode(window.event) == 8)){
  • if(elmt.value=='' & elmt.id==p+'_a'){
  • document.getElementById(p+'_m').focus();
  • document.getElementById(p+'_m').value=document.getElementById(p+'_m').value; //Pour éviter la sélection de la valeur contenu dans le champs
  • }else if(elmt.value=='' & elmt.id==p+'_m'){
  • document.getElementById(p+'_j').focus();
  • document.getElementById(p+'_j').value=document.getElementById(p+'_j').value;
  • }
  • }
  • }
  • //Fonction renvoyant le code de la touche appuyée lors d'un événement clavier
  • function getKeyCode(evenement)
  • {
  • for (prop in evenement)
  • {
  • if(prop == 'which')
  • {
  • return evenement.which;
  • }
  • }
  • return event.keyCode;
  • }
/****************************************
* Champ de saisie de date				*
*****************************************/
/**
*  idDiv = id du bloc dans lequel le champs sera créé (div,span,td)
* classe = la classe css des champs jour,mois année
* tabInd = ordre de tabulation dans le formulaire
* valeur = valeur par défaut (format jj/mm/aaaa)
*/
function inputdate(idDiv,classe,tabInd,valeur)
{
	this.id=idDiv;
	this.nom=idDiv;
	this.cl=classe;
	this.ti=tabInd;
	this.value = valeur;
	this.parent=document.getElementById('__'+idDiv+'__');
	this.parent.innerHTML='<span id=""></span><span id="'+this.id+'sj"></span><span id="'+this.id+'sx"></span><span id="'+this.id+'sm">'
				           +'</span><span id="'+this.id+'sy"></span><span id="'+this.id+'sa"></span><span id="'+this.id+'spr"></span>';
	this.afficher();
}

inputdate.prototype.afficher=function()
{
	tableau=Array("jour","sl1","mois","sl2","annee");
	tabl=Array("j","x","m","y","a");
	tablarg=Array("15.8:2","5:1","15.8:2","5:2","31.8:4");
	d=this.id;
	leChamp=document.createElement("input");
	with(leChamp){
		type="hidden";
		id=this.id;
		name=this.id;
	}		
	this.parent.replaceChild(leChamp,document.getElementById(this.id+'spr'));	
	//this.innerHTML='';
	for(i=0;i<tableau.length;i++){
		elmtcourant=tableau[i];		
		eval(tableau[i]+"=document.createElement(\"input\");");
		eval(tableau[i]+".id='"+this.id+"_"+tabl[i]+"';");
		eval(tableau[i]+".name='"+this.id+"_"+tabl[i]+"';");
		eval(tableau[i]+".className='"+this.cl+"';");
		tlar=tablarg[i].split(":");
		with(eval(tableau[i]+".style")){
			border="0px";
			marginBottom="1px";
			width=tlar[0]+"px";			
			height='100%';
		}
		eval(elmtcourant+".maxLength="+tlar[1]);		
		eval(elmtcourant+".onkeyup = function (){ /*alert('"+this.id+"');*/ keyup('"+this.id+"','"+this.id+"_"+tabl[i]+"')};");
		eval(elmtcourant+".onblur = function () { /*keyup(d,d+'_"+tabl[i]+"');*/ document.getElementById('"+this.id+"').value=document.getElementById('"+this.id+"_j').value+'/'+document.getElementById('"+this.id+"_m').value+'/'+document.getElementById('"+this.id+"_a').value}");
		
		this.parent.replaceChild(eval(tableau[i]),document.getElementById(this.id+'s'+tabl[i]))	;	
	}
	jour.tabIndex=this.ti;
	v =new String(this.value);
	if(v.length == 10){
		jour.value = v.substr(0,2);
		mois.value = v.substr(3,2);
		annee.value = v.substr(6,4);
	}
	sl1.value=sl2.value="/";
	sl1.disabled=sl2.disabled=true;
	sl1.style.color=sl2.style.color="black";
	document.getElementById(this.id).value = this.value;
}

inputdate.prototype.changer = function(val)
{
	dt = this.id;
	tab_val = val.split('/');
	document.getElementById(dt+'_j').value = tab_val[0];
	document.getElementById(dt+'_m').value = tab_val[1];
	document.getElementById(dt+'_a').value = tab_val[2];
	document.getElementById(dt).value = val;
}
function keyup(p,elmtid){
/*
D'abord puisque nous controlons les champ sur onkeyup,nous vérifions d'abord si le nombre de caractère de chaque champ est atteint 
et que le caractère saisi est bien un entier.
Quand cette condition est vérifier la valeur de ce champ est incorrecte pour les cas suivants:
*/
			elmt=document.getElementById(elmtid);
			if(elmt.value.length==elmt.maxLength){
				val_j=parseInt(document.getElementById(p+"_j").value,10)
				val_m=parseInt(document.getElementById(p+"_m").value,10)
				val=parseInt(elmt.value,10);	
				if(
				   (isNaN(elmt.value))
				   | (elmt.id==p+"_j" & (val<1 | val>31))
				   | (elmt.id==p+"_m" & (val<1 | val>12 | (val==2 & val_j>29) | ((val==4 | val==6 | val==9 | val==11) & val_j==31)))
				   | (elmt.id==p+"_a" & (val_j==29 & val_m==2 & (val % 4)!=0))
				  ){
							elmt.value='';
							elmt.focus();
				}else{
					if(elmt.id==p+"_j") document.getElementById(p+"_m").focus(); else if (elmt.id==p+"_m") document.getElementById(p+"_a").focus(); else document.getElementById(p+"_j").focus();
				}
			}
			//Effacement des champs
			if(window.event && (getKeyCode(window.event) == 8)){
				if(elmt.value=='' & elmt.id==p+'_a'){
					document.getElementById(p+'_m').focus();
					document.getElementById(p+'_m').value=document.getElementById(p+'_m').value; //Pour éviter la sélection de la valeur  contenu dans le champs
				}else if(elmt.value=='' &  elmt.id==p+'_m'){
					document.getElementById(p+'_j').focus();
					document.getElementById(p+'_j').value=document.getElementById(p+'_j').value;
				}
			}	
		}

//Fonction renvoyant le code de la touche appuyée lors d'un événement clavier
function getKeyCode(evenement)
{
    for (prop in evenement)
    {
        if(prop == 'which')
        {
            return evenement.which;
        }
    }

    return event.keyCode;
}

 Conclusion

Tester sous Internet Explorer ( sauf les styles css)
et Mozilla Firefox

 Fichier Zip

Les Membres Club peuvent 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

Source avec Zip CHRONOMÈTRE AMÉLIORÉ par Kolosta
Source avec Zip SLEEP() SANS BOUCLE D'ATTENTE CONSOMMATRICE par Phildepantin
Source avec Zip AFFICHAGE DE L'HEURE ET DU FUSEAU HORAIRE (TIMEZONE) SUR LA ... par navylav2
Source avec Zip Source avec une capture HORLOGE TRIPLE AFFICHAGE AU FORMAT AM/PM/24H/DST par sofiane1234
Source avec Zip Source avec une capture HORLOGE NUMÉRIQUE EN JAVASCRIPT, COMPATIBLE IE ET FF par bad_dark_spirit

 Sources en rapport avec celle ci

NUMÉRIC STEPPER par cedriclomb
Source avec Zip Source avec une capture CONTRÔLE DES CHAMPS D'UN FORMULAIRE [CCF] par bultez
PETIT SCRIPT MAIS EFFICACE POUR VALIDER LES DATES par slash135
Source avec Zip LISTE DE FONCTION POUR CONTROLER LES CHAMPS D'UN FORMULAIRE.... par biv83
CONTROLE VALIDITE DATE par bibi7500b

Commentaires et avis

Commentaire de mickaelpfr le 24/02/2009 12:16:36

Bonjour , idée de base inintéressante pour formater certain champs :-)
mais le code est a revoir => innerHTML a proscrire
eval ????????

de plus lorsque l'on appuis sur des lettres le focus se balade dans le champs on ne sais pas pourquoi ...

L'idée de classe est bonne mais il faut revoir la source.

Bon courage

Commentaire de jdmcreator le 24/02/2009 14:18:02

Si je comprens bien ton message Mickaelpfr, la fonction eval() sert à estimer la valeur (en nombre) d'une chaîne. C'est particulièrement utile pour additionner, soustraire, multiplier et diviser les valeurs de par exemple deux champs "input".

Aussi, petite question, pourquoi innerHTML est-il à proscrire ? (Je l'utilise assez souvent)

Aussi, bonne source mais chez moi, la date ne rentre pas complétement dans le rectangle ;)

merci

JDMCreator

Commentaire de mickaelpfr le 24/02/2009 14:39:55

JDMCREATOR :-)

si tu veux effectuer des calculs , fait le directement auprès des valeurs concernées , en l'occurrence ici elle ne servent qu'a concaténé des valeurs de façon assé étrange :

#  eval(tableau[i]+"=document.createElement(\"input\");");
# eval(tableau[i]+".id='"+this.id+"_"+tabl[i]+"';");
# eval(tableau[i]+".name='"+this.id+"_"+tabl[i]+"';");
# eval(tableau[i]+".className='"+this.cl+"';");

plutôt qu'utiliser innerHTML sur lequel on a pas la main si une fois un élément insérer veut être modifié ( enfin si mais pas directement pendant la génération ....... ) il vaut mieux utiliser le dom pour créer des noeuds texte ou même les élément html de cette source :)

Autre point , on utilise ici directement le onclick , donc on ne peut gérer d'autres actions sur cet évènement ...

j'espère avoir été assez constructif :)

Commentaire de jdmcreator le 24/02/2009 23:10:27

Merci beaucoup pour cet éclercissement ;)

Personnellement, je n'utilise eval() que pour les additions pour éviter justement que les valeurs ne soit que rajouté à l'autre.

Il est vrai ici que c'est assez étrange '^^

A+

JDMCreator

Commentaire de mickaelpfr le 25/02/2009 09:05:09

Si tu veut utiliser des fonctions mathématique , cast tes variable a l'aide de parseInt, parseFloat ... ;-)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

controle dans un formulaire [ par adadoudou ] Bonjour,En fait j'ai créer un formulaire HTML où deux champs me pose problème. J'ai un champs date et un champs quantité et j'aurais voulu savoir comm vérification de formulaire [ par lerlaetitia ] Bonjour,j'aimerais vérifier que la somme de mes champs "SURFACEPIECE$i" soit inférieure à une valeur fixée (200 par exemple). Seulement, je ne sais pa pb de vérification de formulaire [ par Yoobi ] bonjour à tous :)Je fais une page d'inscription dont je vérifie les champs avec des fonctions en javascript.Le hic est que les fonctions ne semblent p script qui permet de verifier si les champs d'un formulaire sont complété [ par sema ] Hello,je ne sais pas du tout programmer en javascript, et je souhaite trouver un sript qui permet de verifier si l'utilisateur a remplie les champs d' problème de vérification des champs d'un formulaire [ par arambasic ] Voici mon formulaire avec le code javascript pour le v&#233;rifi&#233;, quand j'envoie le formulaire in me donne&nbsp; bien les box d'erreurs mais il Controle de date dans formulaire [ par laubro ] Bonjour,je cherche un bout de code qui me permettrait de faire un control entre 2 champs date dans un formulaire(php) en cliquant sur le bouton "envoy Redondance automatique de champs formulaire [ par paul13 ] Bonjour,Voici quel est le but de ma recherche. Je souhaiterai si cel&#224; est possible en javascript, rendre redondant la saisie d'un champ texte. ex formulaire vérification sur saisie [ par fredshaoline ] Bonjour, Tout d'abord je tiens à vous remercier pour ce site qui est vraiment génial, je suis vraiment ravi de l'avoir connu. Voilà mon problème. Controle champ formulaire [ par flopad ] Bonjour tout le monde, j'ai une page contenant un formulaire, je voudrais qu'on message d'alerte s'affiche lors de la validation si la date (code ci-d date dans formulaire [ par dlgforum ] Bonjour, Voilà, j'ai un formulaire dans lequel je saisie une date et je souhaiterai un controle pour vérifier si cette date est bien entre deux dates.


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales