J'ai un formulaire HTML sur ma page. Lorsque je mets de la valeur dans l'un des champs de texte dans le formulaire et que j'appuie sur la touche "Entrée", le formulaire est envoyé instantanément. Je pense que cela se produit en raison de l'accent par défaut est sur le bouton soumettre. Mais j'essaye d'enlever cette focalisation en utilisant la fonction de blur(), elle ne fonctionne pas. J'utilise Chrome. Y a-t-il un moyen d'éviter ce scénario? Toutes les suggestions sont les bienvenues. Merci d'avance.comment supprimer le focus par défaut sur le bouton Envoyer au format HTML?
Répondre
blur()
est le chemin à parcourir. Cela fonctionne comme ceci:
<button onclick="this.blur();">some button</button>
Notez que vous ne devez pas utiliser les événements JavaScript et DOM en utilisant les attributs. Ceci est juste à des fins de démonstration. Essayez d'être discret.
Le bouton Envoyer n'est pas réellement mis au point; Entrez dans un champ de texte est censé soumettre le formulaire.
Vous pouvez enregistrer un gestionnaire pour l'événement submit
, puis ne l'autoriser que si le bouton Soumettre était réellement ciblé au moment où l'envoi a été demandé. Cependant, vous allez sciemment rompre le fonctionnement des formulaires HTML. Tout le monde ne veut pas soumettre le formulaire en utilisant la méthode One True Way en cliquant sur le bouton Submit (également, vous allez briser l'accessibilité et introduire des bogues spécifiques au navigateur).
Non. Le focus est toujours sur le champ de texte. En appuyant sur Entrée, il est supposé soumettre le formulaire (et contourne entièrement le bouton de soumission).
Vous pouvez suppress the behavior using JavaScript, mais puisque c'est un comportement normal pour le navigateur, je ne le recommanderais pas.
Peut-être que cela vous aidera, le formulaire est supposé être envoyé avec enter dans la zone de texte (HTML par conception), ce n'est pas une question de mise au point.
Si vous voulez l'éviter, vérifiez this.
Voici le script proposé:
function disableEnterKey(e)
{
var key;
if(window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
return (key != 13);
}
Bonne chance, dites-moi si vous avez besoin d'éclaircissements!
EDIT: Je suis d'accord avec Piskvor answer, il peut apporter quelques bugs
Probablement préférable d'ajouter le gestionnaire d'événement dans l'événement 'onfocus' de l'élément d'entrée et de le supprimer dans' onblur', de cette façon vous ne cassez rien d'autre qui pourrait nécessiter la touche enter. – robertc
Je suis d'accord que ce peut être une bonne idée. Je vais essayer dans quelques-uns. – Trufa
@robertc: ajouter et supprimer des gestionnaires d'événements à la volée? Si vous avez une grosse forme, vous fuirez la mémoire comme un fou dans * ahem * certains navigateurs. – Piskvor
cela n'a rien à voir avec la mise au point, est juste le comportement par défaut de vous du navigateur.Pour éviter cela, vous pouvez essayer de cath l'entrer-keypress comme celui-ci (Source - mais il y a un lot of other solutions (la plupart travaillent de la même manière, tout en utilisant d'autres événements comme les entreprises onsubmit au lieu des documents OnKeyPress)):
function catchEnter(e){
// Catch IE’s window.event if the
// ‘e’ variable is null.
// FireFox and others populate the
// e variable automagically.
if (!e) e = window.event;
// Catch the keyCode into a variable.
// IE = keyCode, DOM = which.
var code = (e.keyCode) ? e.keyCode : e.which;
// If code = 13 (enter) or 3 (return),
// cancel it out; else keep going and
// process the key.
if (code == 13 || code == 3)
return false;
else
return true;
}
// Anonymous method to push the onkeypress
// onto the document.
// You could finegrain this by
// document.formName.onkeypress or even on a control.
window.onload = function() { document.onkeypress = catchEnter; };
essayez d'ajouter l'événement keypress de votre bouton cette fonction javascript:
function ButtonKeyPress()
{
var code = (window.event.which) ? window.event.which : window.event.keyCode;
if (code == 13)
{
event.returnValue = false;
return false;
}
return true;
}
Change:
<input type="text" ... >
pour:
<textarea ... ></textarea>
Vous devrez peut-être jouer un peu avec les attributs, je les ai laissés signifiés comme ...
.
Donc, vous avez un formulaire. Dans ce formulaire, vous avez une entrée de texte et un bouton d'envoi. Vous obtenez dans la saisie de texte, vous tapez du texte, que vous appuyez sur "Entrée". Cela soumet le formulaire. Vous souhaitez rompre ce comportement normal.
Je pense que ce n'est pas une bonne idée: La convention dit que lorsque vous êtes dans une saisie de texte et appuyez sur "Entrée", il soumet le formulaire. Si vous changez ce comportement, les utilisateurs pourraient être (je ne trouve pas le bon mot, disons ~) surpris.
Quoi qu'il en soit, si vous voulez toujours faire cela, vous devriez écouter l'événement keypress sur l'entrée de texte, et que d'éviter le comportement par défaut devrait faire le travail.
disons que vous utilisez jQuery:
$(input[type=text]).bind('keypress', function(evt) {
if(evt.keyCode == 13) {
evt.preventDefault();
}
});
Cela devrait le faire. Je ne l'ai pas testé, peut-être que j'ai fait des erreurs, mais tu as eu l'idée, non?
Et peut-être keyup est mieux que ... keypress Je ne sais pas très bien cela, pas assez de pratique sur les raccourcis clavier
oui je l'ai eu merci – Aashish
essayer cette solution: remplacer la « entrée » avec « bouton » et ajouter attribut le type est égal à « bouton » et gérer l'événement onclick avec la fonction javascript soumettre
<form name='testForm'>
<input type='text' value="myName" />
<button type='button' onclick='testForm.submit()'/>
</form>
je pense que cela fonctionne aussi avec l'entrée d'étiquette en ajoutant le même attribut Profitez Mirco
Le plus simple est de définir le style css comme ceci:
&:focus {
outline: 0 none;
}
- 1. comment définir le focus par défaut?
- 2. enlever la couleur bleue par défaut sur le focus
- 3. par défaut focus formulaire HTML sans JavaScript
- 4. Comment supprimer la bordure "bouton par défaut"?
- 5. Envoyer un e-mail au format HTML
- 6. Le bouton WinForm garde le focus
- 7. Comment supprimer le focus du bouton de soumission
- 8. envoyer sur le numéro de page en format html
- 9. Comment changer le format par défaut en XML dans Symfony?
- 10. Définir le bouton par défaut sur les éléments html avec le plugin jquery
- 11. Définir le format DateTime par défaut C#
- 12. displaytag surpresser le format HTML
- 13. Comment définir le bouton html par défaut pour le formulaire ASP.Net?
- 14. Comment supprimer x et y on soumettre en format HTML avec le bouton Type d'image?
- 15. Comment supprimer le document d'erreur apache par défaut dans mod_perl?
- 16. MFMailComposeViewController appeler par programme le bouton "Envoyer"
- 17. Enregistrer la page actuelle au format HTML sur le serveur
- 18. Spécification d'un format d'exportation par défaut pour le CrystalReportViewer
- 19. WPF Reset Focus sur le bouton Cliquez sur
- 20. Supprimer le focus rect sur le contrôle - Delphi
- 21. Supprimer le problème du bouton
- 22. comment faire pour supprimer le bouton par défaut de la barre de navigation
- 23. Sélectionner le texte de QLineEdit au focus
- 24. Comment changer le format par défaut dans StringToDate? Spring WebFlow
- 25. supprimer le focus de l'activité actuelle
- 26. Comment définir le bouton par défaut dans PyGTK?
- 27. VB.NET - Cliquez sur le bouton Envoyer sur la page Webbrowser
- 28. Focus sur le bouton à l'intérieur de ListBoxItem sans code
- 29. Envoyer un e-mail au format HTML en Python
- 30. Effacer le contenu par défaut de la zone de texte sur le focus avec jQuery
Je pense qu'il a demandé la prévention des comportements par défaut de forme (soumettre) quand il appuie sur Entrée en entrant des données dans l'une des boîtes d'entrée de formulaire. –