CTRL + S pour soumettre le formulaire et toutes les entrées

J’ai un formulaire que j’utilise dans mon CMS et que je voudrais append à l’ouverture supplémentaire pour enregistrer le formulaire sur la touche: “Ctrl + S”

Cela fonctionne pour toutes les entrées sauf les boutons de soumission qui ne sont pas envoyés, cet exemple simple montre ce que je veux dire:

       html { height: 100%; } body { color: #262626; background: #f4f4f4; font: normal 12px/18px Verdana, sans-serif; height: 100%; } #container { width: 760px; margin: 0 auto; padding: 10px 60px; border: solid 1px #cbcbcb; background: #fafafa; -moz-box-shadow: 0px 0px 10px #cbcbcb; -webkit-box-shadow: 0px 0px 10px #cbcbcb; min-height: 100%; height: auto !important; height: 100%; }    (function($){ $(document).ready(function(){ // Save Form $(window).keypress(function(event) { if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19)) return true; $("#container form").submit(); event.preventDefault(); return false; }); }); })(jQuery);    

La valeur d’un bouton d’ submit n’est incluse dans la demande que s’il s’agit du bouton d’envoi sur lequel l’utilisateur a cliqué.

Étant donné que vous soumettez le formulaire directement (à l’aide de JS), vous ne cliquez pas sur un bouton d’envoi, aucun n’a donc été soumis.

Au lieu d’appeler .submit() sur le formulaire, essayez d’appeler .click() sur le bouton d’ .click() que vous souhaitez inclure.

 $(window).keypress(function(event) { if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19)) return true; $("#container form input[name=save]").click(); event.preventDefault(); return false; }); 

Essayer:

 if($("#container form :submit:first").length) { $("#container form :submit:first").click(); } else { $("#container form").submit(); } 

Cela déclenchera un clic sur le premier bouton d’envoi (si disponible)

Le formulaire n’a pas de valeur d’action définie et il existe plusieurs entrées d’envoi.

Les soumissions multiples peuvent casser .submit () mais je ne le pense pas – je pense que ne pas avoir d’action pour envoyer le formulaire est la raison pour laquelle il semble ne rien faire.

EDIT / CORRECTION:

J’ai appris quelques choses depuis que j’ai posté cette réponse (merci @JohnMagnolia), alors permettez-moi de me corriger:

En réalité, les atsortingbuts d’action vides sont autorisés dans HTML 4, mais non autorisés en HTML5. Dans la plupart des cas, un atsortingbut d’action vide entraînera l’envoi du formulaire à l’URL actuelle, y compris les parameters GET. Les boutons de soumission multiples ne sont pas un problème et pas la raison pour laquelle le code n’a pas fonctionné, voir la réponse de @ Matt pour la réponse correcte.