J'ai trois formulaires sur une page. Ils ont chacun plusieurs entrées, y compris des fichiers. Je voudrais que lorsque je soumets le dernier formulaire, les entrées pour les trois formulaires soient envoyées aux données POST pour le lieu de l'action. Je peux jQuery si nécessaire.soumettre plusieurs formulaires à la même page
Répondre
Votre seule option en ce moment est une requête jQuery AJAX (ou XMLHTTP, mais ce n'est pas recommandé).
Essayez de repenser votre conception, je veux dire, pourquoi avez-vous besoin de 3 formulaires sur une page ... c'est trop "formy" pour moi déjà.
Il y a quelque chose que vous pouvez probablement faire: mettre le conteneur boîte de dialogue jQuery UI div dans une forme (cela devrait fonctionner, je suppose) et juste les champs en son sein ...
Je ne veux pas, mais j'essaie de faire cela Travail de dialogue jqueryUI – Brian
@Brian: Basé sur l'idée de Diodeus, je pense que vous pourriez essayer d'utiliser la manipulation DOM pour compiler les 3 formes visibles en une forme invisible et ensuite soumettre par programme que ... – aviraldg
@Brian: Il y a quelque chose d'autre faire: placer le conteneur div de la boîte de dialogue de l'interface utilisateur jQuery à l'intérieur d'un formulaire (cela devrait fonctionner, je suppose) et avoir juste les champs qu'il contient ... – aviraldg
Vous pouvez les soumettre aux Iframes cachés, de cette façon vous gardez le contrôle de la page hôte.
Vous pouvez écrire une fonction JS qui soumet les trois formulaires.
Vous pouvez essayer d'utiliser serialize() et ajouter la chaîne à votre URL d'action.
Ne fonctionne pas, j'ai des entrées de fichier – Brian
Voici comment combiner plusieurs formulaires en un seul. Maintenant, un avertissement: si vous avez plus d'un formulaire avec des entrées de type fichier, vous avez un problème qui est vraiment difficile à résoudre. Le navigateur ne vous laissera pas utiliser XMLHttpRequest (c.-à-d. Ajax, sous n'importe quelle forme) pour publier un formulaire POST en plusieurs parties avec des entrées de fichier. Vous ne serez pas non plus en mesure de créer un nouveau formulaire avec les entrées de fichier, car vous ne pouvez pas définir la valeur des éléments d'entrée de fichier avec Javascript. Ainsi, la seule façon dont cela peut fonctionner est si vous avez plusieurs formes (3?) Et que seulement UNE d'entre elles a des entrées de fichier. Si c'est le cas, alors vous pouvez tirer toutes les entrées (non-fichier) des deux autres formulaires dans l'autre formulaire, puis soumettre celui-ci.
function whenFormsCollide() {
// pass in one or more form elements
var forms = $.makeArray(arguments);
var hasFiles = 0, targetForm = null;
$.each(forms, function(i, f) {
if ($(f).find('input:file').length > 0) {
++hasFiles;
targetForm = f;
}
});
if (hasFiles > 1) throw "More than one form has 'file' inputs";
targetForm = targetForm || forms[0];
$.each(forms, function(i, f) {
if (f === targetForm) continue;
$(f).find('input, select, textarea')
.appendTo($(targetForm));
});
$(targetForm).submit();
}
Je ne l'ai pas testé, mais je l'ai fait des trucs comme beaucoup de fois et je sais que la construction d'un élément <form>
fonctionne très bien, même dans IE6. (IE a parfois des problèmes étranges avec les champs de formulaire, mais je pense que cette partie devrait être OK.) Au pire, au lieu de simplement "déplacer" les champs avec cet appel "appendTo", vous devrez copier les noms et valeurs et créer de nouveaux champs de formulaire.)
Pouvez-vous expliquer le sens de la séparation des informations sous différentes formes et combiner les informations plus tard avec JS? Et lorsque Java Script est désactivé, vos formules ne fonctionnent pas? Mettez tous ensemble dans une forme. Si vous souhaitez évaluer uniquement les champs de données spéciaux de votre formulaire, vérifiez sur le serveur quel bouton de soumission a été enfoncé.
Lorsque vous avez un problème et que vous avez besoin de JS pour résoudre un problème de communication normal, vous avez un problème de conception. JS peut vous aider à personnaliser et donner une meilleure interface utilisateur - mais ce problème est inutile.
J'ai utilisé le code ci-dessous pour soumettre les données de deux formulaires sur mon site Web.
L'idée est que vous obtenez les données multiples formes utilisant serialize
et combiner ces données et égaliser que pour data
paramètre de la fonction $.ajax
.
.
// submits two forms simultaneously
function submit_forms(form1_id, form2_id)
{
var frm1_name = $("#" + form1_id).attr('name');
var frm2_name = $("#" + form2_id).attr('name');
if (frm1_name == frm2_name)
{
alert('The two forms can not have the same name !!');
}
else
{
var frm1_data = $("#" + form1_id).serialize();
var frm2_data = $("#" + form2_id).serialize();
if (frm1_data && frm2_data)
{
$("#div_busy").html('<strong>Processing...</strong><br /><img id="busy" src="./images/progress_bar.gif" border="0" style="display:none;" />');
$("#busy").fadeIn('slow');
$.ajax(
{
type: "POST",
url: "process_sticker_request.php",
data: frm1_data + "&" + frm2_data,
cache: false,
error: function()
{
$("#busy").hide('slow');
$("#div_busy").css({'color':'#ff0000', 'font-weight':'bold'});
$("#div_busy").html('Request Error!!');
},
success: function(response)
{
$("#div_busy").hide('slow');
$("#hdnFormsData").html(response);
// open popup now with retrieved data
window.open('', 'popup2', 'toolbars = 1, resizable=1, scrollbars=1, menubar=1');
document.getElementById("prt").action = 'win_sticker.php';
document.getElementById("prt").target = 'popup2';
document.getElementById("prt").submit();
// reset the action of the form
document.getElementById("prt").action = 'list_preview.php';
}
});
}
else
{
alert('Could not submit the forms !!');
}
}
}
- 1. soumettre plusieurs formulaires
- 2. MVC asp.net: Soumettre plusieurs formulaires
- 3. Deux formulaires sur la même page drupal
- 4. Soumettre plusieurs boutons/formulaires dans Rails
- 5. Gestion de plusieurs formulaires sur une même page JSP
- 6. 2 formulaires ajax sur la même page
- 7. MVC: Soumettre un formulaire à partir d'une page avec plusieurs formulaires
- 8. Formulaires multiples sur la même page avec Rails
- 9. Contrôle de plusieurs formulaires en même temps
- 10. JQuery Soumettre conditionnellement les formulaires
- 11. Joomla. PHP auto-soumettre des formulaires
- 12. Jquery et plusieurs formulaires sur une page
- 13. Symfony: joindre deux formulaires dans la même page
- 14. Plusieurs formulaires sur une seule page - JQuery
- 15. soumettre à l'intérieur soumettre
- 16. Soumettre un événement à partir de quelques formulaires
- 17. Plusieurs pages de connexion dans la même application ASP.Net à l'aide de l'authentification par formulaires
- 18. Comment prendre en charge plusieurs formulaires qui ciblent le même Créer une action sur la même page?
- 19. Puis-je lier plusieurs formulaires à un même modèle à l'aide du classeur par défaut?
- 20. Plusieurs formulaires django publiés à partir de la même page, en ligne et en ajoutant/supprimant ces inlines
- 21. jQuery Appuyez sur Entrée pour soumettre le formulaire actuel sur la page avec plusieurs formes?
- 22. Jquery soumettre plusieurs liens
- 23. RenderAction avec plusieurs formulaires
- 24. Puis-je soumettre la même application à l'App Store sous plusieurs comptes/identités différents?
- 25. comment pouvez-vous avoir la même forme gérer par javascript plusieurs fois sur la même page?
- 26. Comment gérer plusieurs formulaires sur une seule page?
- 27. Plusieurs formulaires dans la fenêtre C#
- 28. ajax soumettre plusieurs formes via jquery
- 29. Comment puis-je avoir plusieurs formulaires pour mettre à jour le même modèle?
- 30. Comment puis-je soumettre deux formulaires en un seul clic?
Les autres formulaires sont-ils soumis avant la finale? –
non, je veux les soumettre tous à la fois – Brian
Dupliquer: http://stackoverflow.com/questions/2362251/jquery-submit-multiple-forms/ –