11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour tout le monde,

J'ai une question importante car mon site plante :

J'ai ce code généré :

<td><input name="textarea" id="note_zone_de_texte2" size="4" style="text-align: center;" value="0" onkeypress="chiffres(event);" onblur="comparer(document.getElementById('note_originale2').value, document.getElementById('note_zone_de_texte2').value);" type="text" width="5%"> </td> <td width="25%" align="center"></td> </tr>


Ce que j'aimerais faire, c'est INTERDIRE l'exécution de la fonction comparer SI chiffres ne retourne pas VRAI par exemple ou ok.

Chiffres permet de checker si l'utilisateur n'a pas encodé un caractère interdit, en voici le code :

function chiffres(ev) 

{ 
// cette alerte permet de connaître l'évènement lorsque l'on clic sur le clavier exemple une tabulation donnera deux alertes (9 et 0)
//alert(ev.keyCode); alert(ev.which); 

	// IE 
if((ev.which < 48 || ev.which > 57) && (ev.which < 8 || ev.which > 8) && (ev.which < 9 || ev.which > 9) && (ev.which < 65 || ev.which > 66) && (ev.which < 68 || ev.which > 68) && (ev.which < 74 || ev.which > 74) && (ev.which < 82 || ev.which > 83)){ 
		ev.returnValue = false; 
		ev.cancelBubble = true; 
		//alert("les seules caractères autorisés sont : les chiffres de 0 à 20, ABS, R (report), J (Justifié), D (Dispensé)");
	} 
	// DOM 
	if((ev.which < 0 || ev.which > 0)&&(ev.which < 48 || ev.which > 57) && (ev.which < 8 || ev.which > 8) && (ev.which < 9 || ev.which > 9) && (ev.which < 65 || ev.which > 66) && (ev.which < 97 || ev.which > 98) && (ev.which < 68 || ev.which > 68) && (ev.which < 115 || ev.which > 115) && (ev.which < 74 || ev.which > 74) && (ev.which < 82 || ev.which > 83)){ 
		ev.preventDefault();
		ev.stopPropagation(); 
		alert("les seules caractères autorisés sont : les chiffres de 0 à 9, ABS, R (report), J (Justifié), D (Dispensé)");
	} 
	
}


J'aimerais donc que si le visiteur entre "q" par exemple (caractère interdi) que la fonction comparer ne s'exécute pas.

Est-ce possible de faire cela ?

Un super grand merci d'avance.

beegees
Essayes de renseigner l'évènement onblur avec javascript dans ta fonction chiffre avec this.onblur=comparer(...) (this désignant l'objet dans lequel tu te trouve, dans ton, la balise note_zone_de_texte2).

Les cancelBubble et stopPropagation sont inutiles car limiter à l'évènement courant (en l'occurrence, onkeypress dans ton cas) et n'ont aucune influence sur les autres évènement.