2009-10-28 4 views
0

J'ai 25 composants qui comprennent [textarea, textfile, radio, combo, etc ...] et j'ai écrit un événement clé de sorte que lorsque "ENTRER" est entré, j'appelle une fonction qui va soumettre la page.Détecter l'emplacement du curseur

Maintenant, ma page est soumise lorsque j'appuie sur Entrée, même dans la zone de texte qui ne devrait pas l'être. Donc est-il possible que je ne puisse pas soumettre la page si elle est pressée dans la zone de texte?

Cela se produit uniquement dans IE7 et IE8; cela fonctionne correctement dans tous les autres navigateurs.

+1

Je ne suis pas sûr de savoir pourquoi vous devez faire . Si vous utilisez juste un '

' normal, c'est le comportement que vous obtiendrez sans avoir à écrire un script de frappe. Si vous voulez détourner la soumission pour faire autre chose que la valeur par défaut, par exemple. AJAX, mettez ce code sur 'form.onsubmit'. – bobince

Répondre

0

vous pourriez probablement détecter si l'une des zones de texte, etc. n'est pas remplie/emtpy/unset. si tous sont correctement remplis, envoyez le formulaire.

0

Avez-vous joint "l'événement clé" à l'ensemble du formulaire? Le DOM entier? Si vous avez fait c'est un comportement normal. Si vous souhaitez que la touche "Validation" s'affiche lorsque l'accent est mis sur le bouton "Envoyer", appliquez cette fonctionnalité dans l'événement "onsubmit". Vous pouvez bien sûr effectuer toutes les validations dont vous avez besoin. Si vous souhaitez simplement exclure l'événement de clé d'entrée de la zone de texte - effectuez une vérification simple si le focus est dans la zone de texte qui a été sélectionnée.

0

Le comportement par défaut d'un formulaire est de soumettre si l'utilisateur frappe entrer dans le formulaire, sauf si le focus est sur une zone de texte, ce que vous voulez est le comportement par défaut. Supprimez le code que vous avez actuellement qui gère les touches pour le formulaire et vous aurez ce que vous voulez.

+0

j'ai une fonction où je soumets avec force la page sur entrer. et ce n'est plus par défaut. maintenant c'est le code if (browserName == "Microsoft Internet Explorer" && éléments [item] .getAttribute ("type") == "submit") { event.returnValue = false; événement.cancel = true; éléments [élément] .click(); retour; } donc maintenant, avant de cliquer, si je peux vérifier si le curseur est dans textarea je ne sais pas d'autre comment puis-je obtenir le composant où le curseur est? – pradheep

+0

Désolé, je ne pense pas comprendre. Pourquoi avez-vous du code à gérer entrer? Est-ce que le formulaire ne fait pas ce que vous voulez quand vous supprimez le code? Si non, comment cela bahving différemment de ce que vous voulez? –

0

Je ne suis pas sûr si cela correspond à vos besoins, mais vous pouvez désactiver la touche entrée dans la zone de texte avec quelque chose comme ceci:

$(document).ready(function(){ 
$('textarea').keypress(function(e){ 
    var key = (window.event) ? e.keyCode : e.which; 
    if (key == 13) { 
    return false; 
    } else { 
    return true; 
    } 
}) 
})