11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

J'ai un formulaire assez long avec au final un seul et unique <input type="submit" /> et avant, plusieurs <button type="submit"> ... </button> ; ces boutons servent à réaliser des actions au sein du formulaire comme rajouter des champs optionnels.

Le soucis est que lorsqu'un utilisateur appui sur "Entrée", celà valide un "bouton" au lieu du "submit" final ; avez vous une solution ? Smiley smile

J'ai bien essayé de "maîtriser" la touchée entrée, mais sans succès :

	$('form fieldset').keypress(function(event) {
		if(event.keyCode == 13) {
			$('form fieldset submit:last').submit();
//$('form fieldset submit:last').click(); ne donne rien non plus
			event.preventDefault();
			event.returnValue = false;
			return false;
		}  
	});


Merci d'avance Smiley smile
Modifié par Gaylord.P (22 Oct 2012 - 14:23)
la solution, bien séparer ton formulaire pour que les boutons <button type="submit"> ... </button> ne soit pas dedans. Ou ne pas faire ça avec des boutons "submit" mais avec des boutons lambda car je suppose que tu as des events onclick dédié a tes boutons. Si c'est le cas , un <button type="button"> devrait faire l'affaire Smiley cligne
En fait c'est un peu plus simple que ça ^^

J'essaie au contraire de me passer au maximum de javascript pour garder le maximum de fonctionnalités, le javascript n'étant qu'un plus.
Par exemple, dans l'image jointe, un membre peut mettre une photo puis ensuite la supprimer en cliquant sur le bouton "Supprimer" ; c'est ce bouton qui pose problème puisque lorsqu'un utilisateur appui sur ENTREE, ça supprime la photo au lieu de valider le formulaire.

upload/502-accessibilit.png
Modifié par Gaylord.P (14 Oct 2012 - 18:38)
Est-ce que lorsque tu appuie sur Entrée, c'est toujours le même submit qui est appuyé où est-ce le dernier utilisé avant ?

Si c'est le cas tu pourrait jouer avec le focus en virant le focus du bouton appuyé une fois qu'il est appuyé et en l'attribuant sur le submit que tu veux par défaut.

Comme ça si on appuie sur entrée ça validera toujours ton formulaire global et non le dernier submit appuyé.