Backspace et onClick [Résolu]

nagaD.scar 4255 Messages postés samedi 8 septembre 2007Date d'inscription 16 avril 2018 Dernière intervention - 24 oct. 2016 à 10:39 - Dernière réponse : nagaD.scar 4255 Messages postés samedi 8 septembre 2007Date d'inscription 16 avril 2018 Dernière intervention
- 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
Afficher la suite 

2 réponses

Répondre au sujet
nagaD.scar 4255 Messages postés samedi 8 septembre 2007Date d'inscription 16 avril 2018 Dernière intervention - 24 oct. 2016 à 11:14
0
Utile
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?
Commenter la réponse de nagaD.scar
nagaD.scar 4255 Messages postés samedi 8 septembre 2007Date d'inscription 16 avril 2018 Dernière intervention - 24 oct. 2016 à 14:02
0
Utile
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
Commenter la réponse de nagaD.scar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.