Backspace et onClick

Résolu
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 24 oct. 2016 à 10:39
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 24 oct. 2016 à 14:02
Salut à tous,

J ai un soucis en javascript. Pour faire au plus simple:

Je commence dans un contexte de champs fermés (readOnly et un background grisé). Ce que je souhaite faire: Lors de l evenement click, j'ouvre le champ et je donne le focus. Voilà le code associé:

 
openField = function(e) {	
	e=this;
	e.readOnly = false;
	e.style.backgroundColor = "#FFF";
	setHelpMSG(e);
	e.focus();
};


Lors du click, je passe bien dans ma fonction, le background se met bien en et mon focus est bon (positionné en fin de champ s il y a du texte).
Mon problème est le suivant: dans le cas ou je ne fais qu un seul click et que j appuie sur backspace pour effacer (en somme, le fonctionnement standard), mon navigateur veut faire un retour en arrière. Par contre, si je me déplace dans le champs (avec les flèches directionnelles) ou si je click une seconde fois dessus, ca fonctionne très bien.

Histoire de checker j'ai donc tenté:
- Doubler le code de ma fonction (vu que le second passage "fixe" le truc) => nop
- Vérifier si le réel focus n'était pas un autre champ (genre une div, ce qui expliquerai) => nop
- Vérifier si considérait bien le champ comme un input => oui


Donc en gros tout semble ok mais le problème persiste ..
Ah et uniquement sous ie, je n ai pas de soucis sous ff ou chrome (mais j ai pas le choix, faut que ca tourne sous ie T-T).

Bref s'il y a des idées je suis preneur, j ai pas vraiment envie de gérer le backspace moi même .. bien que je ne crois pas avoir trop le choix.


Merci d avance.
Naga

2 réponses

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
24 oct. 2016 à 11:14
En fait le soucis ne concerne pas que le backspace mais toutes les touches => lors du premier click, l element semble correct (il n est plus en readOnly dans le code nav) et pourtant je ne peux pas réecrire si je ne click pas une seconde fois ...

Et donc pour gérer le back, j 'ai ce contenu (déclenche à l appuie touche) :

	var el =document.activeElement;
	switch(el.tagName){
		case "INPUT": 			
			var str = el.value;
			if(str.length > 0){
				el.value= str.substring(0, str.length -1);
			}
			break;
	}
	cancelDefaultAction(e);	


Mais je ne veux pas avoir à gérer toutes les touches du clavier non plus pour palier à un readOnly imaginaire .. une idée?
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
24 oct. 2016 à 14:02
Bon j ai fini par trouver, il faut appeler le blur de l element:

openField = function(e) {	
	e=this;
	e.blur();
	e.readOnly = false;
	e.style.backgroundColor = "#FFF";
	setHelpMSG(e);
	e.focus();
};


naga
0
Rejoignez-nous