Téléchargement
illégal
Posez votre question Signaler

JavaScript - check input [Résolu]

graphh 36Messages postés 18 février 2009Date d'inscription 23 juillet 2011Dernière intervention - Dernière réponse le 24 janv. 2011 à 12:11
Bonjour,
Dans le cadre de l'envoie d'un formulaire, j'aimerais controler la saisie de l'utilisateur en lui empêchant d'entrer les caractères spéciaux hormis le "é". J'ai commencé avec ce petit code mais cela ne donne rien:
JavaScript:
			
function isAlphabet(elem, helperMsg) { 
	var alphaExp = /^[a-zA-Z]/;  
		if(elem.new_name.match(alphaExp)) { 
			return true;  
		}
		else { 
		        alert(helperMsg); 
			elem.focus(); 
			return false; 
		} 
	}

Formulaire:
<form method="post" action="index.php?page=managementStaff" id="addStaff">
	<img src="design/warning.png"><span style="font-size: 14px;color: red;"> Must have         a name</span><br />
	<label>Name</label><input type="texte" name="new_name"><br/>
	<label>Surname</label><input type="texte" name="new_surname"><br/>
	<input type="submit" value="Add" onclick="return isAlphabet(document.getElementById('new_name'), 'Letters Only Please')">
<form> 

Normalement ça vérifie a l'envoie du formulaire, j'aimerais empêcher dès la saisie à un utilisateur d'entrer ces caractères...
Si vous savez m'aider, merci!
Lire la suite 

JavaScript - check input »

Suggestions
8 réponses
Réponse
+1
moins plus
Pourquoi faire compliquer ?

Attention, le code ci dessous n'autorise que des lettres (sans espaces ni tiret).
Si tu veux autoriser les espace alors il faut mettre [a-z ], pour les espaces et les tirets : [a-z -] (en gros tu rajoutes tout ce que tu veux autoriser entre les crochets)

<script type="text/javascript">
	function verifier_champs(){
		if(document.getElementById('new_name').value == ''){
			alert('Vous devez saisir un nom.');
			return false;
		}
		
		if(	!(/^[a-z]*$/i.test(document.getElementById('new_name').value)) ){
			alert('Le nom ne doit pas contenir de caractères spéciaux.');
			return false;
		}
		return true;
	}
</script>

<form method="post" action="index.php?page=managementStaff" id="addStaff" onsubmit="return verifier_champs()">
	<img src="design/warning.png"><span style="font-size: 14px;color: red;"> Must have         a name</span><br />
	<label>Name</label><input type="texte" name="new_name" id="new_name"><br/>
	<label>Surname</label><input type="texte" name="new_surname" id="new_surname"><br/>
	<input type="submit" value="Add">
</form>
graphh- 24 janv. 2011 à 11:50
Parfait, un grand merci!

Pour le cumule du contrôle des 2 input, je fais une concaténation avec un deuxième argument dans le if?
Seb33300- 24 janv. 2011 à 12:11
Ajoute plutot 2 autres if :

if(document.getElementById('new_surname').value == ''){
	alert('Vous devez saisir un surnom.');
	return false;
}
		
if(	!(/^[a-z]*$/i.test(document.getElementById('new_surname').value)) ){
	alert('Le surnom ne doit pas contenir de caractères spéciaux.');
	return false;
}
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour

 <script type="text/javascript">

function valid_mail(evt) {
	var keyCode = evt.which ? evt.which : evt.keyCode;
	var interdit = 'àâäãçéèêëìîïòôöõùûüñ &*?!:;,\t#~"^¨%$£?²¤§%*()[]{}<>|\\/'\'';
	if (interdit.indexOf(String.fromCharCode(keyCode)) >= 0) {
		return false;
	}
}
</script> 


Enlève les caractères spéciaux que tu souhaites garder .

Bonne journée .
Cordialement , ApL
Ajouter un commentaire
Réponse
+0
moins plus
je garde l'appel de la fonction avec un
onclick="return valid_mail"

?

Merci de ta réponse!
Ajouter un commentaire
Réponse
+0
moins plus
éssaye sans et éssaye avec .
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
Je viens d'essayer votre script, et dans un cas comme dans l'autre, rien ne change, je peux entrer n'importe qu'elle valeurs dans ma DB, et donc dans mon champs.

J'ai vu sur certains site que des formulaires interdisaient directement la saisie, et donc ne faisaient pas une vérification à l'envoie du formulaire mais empêchaient directement la saisie de certains caractères.

Est-ce que cela vous dit quelque chose?

Merci!
Ajouter un commentaire
Réponse
+0
moins plus
Problème toujours non résolu, mais j'ai trouvé un script qui correspond un peu plus à mes attentes.
 <script type="text/javascript">
  function validation(chaine) 
	{
	chaineValidee='';
	caracteresValides="abcdefghijklmnopqrstuvwxyzéèàùâêûîìABCDEFGHIJKLMNOPQRSTUVWXYZ-";
	 // caracteresNonValides="";
	for (i=0; i<chaine.length; i++)
	  { 
	  if (caracteresValides.indexOf(chaine.charAt(i)) != -1)
	  // if (caracteresNonValides.indexOf(chaine.charAt(i)) == -1)
		{ 
			chaineValidee += chaine.charAt(i)
		} 
	  return chaineValidee;
	  } 
	} 
</script> 
<form method="post" action="index.php?page=managementStaff" id="addStaff">
	<img src="design/warning.png"><span style="font-size: 14px;color: red;"> Must have a name</span><br />
	<label>Name</label><input type="texte" name="new_name" onChange="this.value=validation(this.value)"><br/>
	<label>Surname</label><input type="texte" name="new_surname" onChange="this.value=validation(this.value)"><br/>
	<input type="submit" value="Add">
<form>  


Seulement il me reste un soucis, lorsque je fais une insertion de caractères valides(i.e: test), il me coupe ma chaîne pour me laisser seulement le 1er caractère(-> t), si j'entre un caractère non autorisé(i.e: test#), même chose(-> t). Si maintenant j'entre une caractère mauvaise mais commençant par un désirable (i.e: #test), la plus rien n'apparaît dans mon champ(-> ).

Si vous pouviez m'aider à finaliser cela... un grand merci!

PS: Lors d'une mauvaise entrée, j'aimerai une alert "bad entry", je dois donc insérer
alert('bad entry');


J'insers ceci avant mon return ChaineValidee je suppose? :)
Ajouter un commentaire
Ce document intitulé « JavaScript - check input » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?