JavaScript - check input

Résolu/Fermé
graphh Messages postés 37 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 juillet 2011 - 14 janv. 2011 à 15:54
Seb33300 Messages postés 16 Date d'inscription dimanche 9 avril 2006 Statut Membre Dernière intervention 25 janvier 2011 - 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!



A voir également:

6 réponses

Seb33300 Messages postés 16 Date d'inscription dimanche 9 avril 2006 Statut Membre Dernière intervention 25 janvier 2011 1
24 janv. 2011 à 10:55
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>
1
graphh Messages postés 37 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 juillet 2011 1
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?
0
Seb33300 Messages postés 16 Date d'inscription dimanche 9 avril 2006 Statut Membre Dernière intervention 25 janvier 2011 1
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;
}
0
Profil bloqué
14 janv. 2011 à 16:20
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
0
graphh Messages postés 37 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 juillet 2011 1
14 janv. 2011 à 18:07
je garde l'appel de la fonction avec un
onclick="return valid_mail"

?

Merci de ta réponse!
0
Profil bloqué
14 janv. 2011 à 19:00
éssaye sans et éssaye avec .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
graphh Messages postés 37 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 juillet 2011 1
17 janv. 2011 à 08:20
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!
0
graphh Messages postés 37 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 juillet 2011 1
24 janv. 2011 à 10:10
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? :)
0