Pass variable supplémentaire lors de la soumission d'un formulaire à l'aide de jQuery
J'ai un formulaire dans lequel le bouton "Soumettre" ne pas s'asseoir à l'intérieur de la <form>
balises. Le bouton soumettre a un click
gestionnaire de soumettre le formulaire via jQuery submit()
événement. Cela fonctionne parfaitement.
Cependant, j'ai besoin de la valeur du bouton Soumettre pour être POST ed ainsi. Depuis le bouton n'existe pas au sein de la <form>
étiquettes, il n'est pas inclus dans le POSTE de tableau. Donc, j'ai besoin de concevoir un moyen de passer une variable supplémentaire lorsque le formulaire est soumis.
Certaines dispositions sur ce qui ne peut pas se produire pour parvenir à cette fin comprennent:
- Le bouton "Soumettre" ne peut pas être déplacé à l'intérieur de la
<form>
balises. - Il ne peut pas utiliser le jQuery
ajax
,post
, ouget
méthodes. - Il ne peut pas avoir caché
input
champs ou de soumettre des boutons cachés par les CSS. - Le formulaire doit agir exactement comme si il était normal d'un bouton de soumission du formulaire.
J'ai imaginé quelque chose comme, mais évidemment, cela ne fonctionne pas.
$('#admin_form').submit({'variable_name', 'true'});
Quelqu'un a des idées sur comment je pourrais faire?
Vous devez vous connecter pour publier un commentaire.
Une chose que vous pourriez faire est d'utiliser la
onsubmit
attribut javascript injecter un poste de champ dans le formulaire, la valeur du bouton "soumettre" droit tel qu'il est présenté. Que vous avez à faire cela avec un champ caché, mais vous devez seulement ajouter le champ de saisie à droite après que l'utilisateur a cliqué sur le bouton soumettre, à savoir le champ de saisie n'existerait pas là depuis le début (j'espère que cela répond à vos exigences). Donc quelque chose comme:Qui resterait dans le supplément de valeur que le bouton a été cliqué.
Ce qui semble être une vieille question, mais depuis que j'ai juste rencontré un problème similaire et a trouvé une bonne solution (pour moi), je pensais que je poste ça:
ou
en fonction de si vous voulez passer une variable appelée
variable_name
avec la valeurtrue
ou vous souhaitez passer 2 variables distinctes.Et juste pour être clair, ce ne sera pas automatiquement soumettre
variable_name
avec le reste des champs de formulaire, mais si vous avez un gestionnaire de soumission, comme je le fais dans jQuery, les variables seront passés comme arguments, après l'événement.$('#admin_form').on('submit', function() { ... });
De Jesse réponse est la seule façon d'y parvenir par la POSTE. Vous pouvez également ajouter une variable à la forme de la valeur de l'action, mais qui seraient de passage que les param via GET au lieu de POST. Sans cachés entrée annexe au formulaire avant d'autoriser le navigateur par défaut "soumettre" action, il n'y a aucun moyen d'accéder à la crue publier des données de la requête HTTP, avant il a été présenté - c'est un poulet avant de le dilemme de l'oeuf - ce que vous avez l'intention de faire est de changer les données HTTP POST/en-têtes envoyés à la page suivante, mais la seule façon qu'il existe des données avant le navigateur affichant les données de la page suivante, c'est d'avoir l'entrée balises imbriquées à l'intérieur de l'élément de formulaire.
Une solution alternative, vous pourriez aller avec serait d'utiliser le $.post() permet d'envoyer toutes les données que vous voulez par la poste au cours de la onsubmit gestionnaire, et dans le gestionnaire de succès rediriger vers la page que vous souhaitez. Je sais que cela ne va pas selon les règles ci-dessus, mais il est une autre solution possible à un problème n'en est pas moins.
Si vous souhaitez obtenir une vraie folle bien et suivez toutes vos règles, vous pouvez également:
pour les DOM
bouton dans le formulaire
cliquez sur l'événement sur le injecté soumettre
bouton dans la cloné forme.
Si vous voulais le faire directement à partir d'un élément qui a été modifié sans l'écriture d'un gestionnaire de soumission, cela fonctionne:
input
élément à chaque fois une sélection qui se passe. Si quelqu'un a modifié la date, plusieurs fois (disons 3 fois), vous aurez un supplément de 3 cachéeinput
éléments insérés dans le DOM qui pourrait vous mettre en place pour plus de problèmes.Sur jquery 1.11.1
J'ai réussi comme ça:
A lire également: https://api.jquery.com/event.data/