2010-08-20 8 views
14

Je veux utiliser jQuery pour soumettre ma forme et je peux le faire comme siRéglage soumettre valeur jQuery soumettre

$('#myform_id').submit(); 

et c'est tout bon, mais normalement quelqu'un clique sur un bouton d'envoi de ce bouton soumettre a une valeur donc quand je fais le soumettre via jQuery je dois également définir une valeur de soumission comment puis-je faire cela?

EDIT

comme l'a noté quelques réponses que je pouvais le faire en simulant un clic de l'utilisateur, mais je ne veux pas faire que je veux passer la valeur soumettre quand j'utilise la commande .submit() si cela est possible

finalement le soumettre à l'aide ajax forme

** ** Préciser

ok donc j'ai installé jQuery utiliser jquery validate et dispose d'un gestionnaire soumettre comme siAlors que j'appelle j'appelle run_ajax passant et objet contenant des informations sur quel type d'ajax je veux et ce que vous avez.

et exécute finalement ce

obj.formitem.ajaxSubmit({ 
    dataType:'json', 
    data: obj.pdata, 
}); 

obj.formitem == $('#myform_id'); 

donc quand la forme est de soumettre tout ce qui arrive tout bon.

donc je charger la page avec cette forme en dialogue jquery et je veux qu'ils soient en mesure de cliquer sur un bouton dans la boîte de dialogue qui déclenche le formulaire soumettre et indique également la forme ce type de saisine était demandé

, espérons cela est clair maintenant désolé pour la confusion

+0

Cette fonction juste déclencheurs la soumission de forme normale. Si la valeur ne vient pas, vous devriez peut-être déclencher l'événement click du bouton submit. La plupart du temps avec jQuery, les fonctions $ .ajax/$. Get/$. Post sont utilisées plutôt qu'une soumission normale qui accède à une nouvelle page. – Fosco

Répondre

11

un moyen rapide serait $('#myform_id #submitButtonID').click();

+3

Je ne veux pas simuler un clic mais je vous remercie – mcgrailm

+3

malgré ne pas vouloir le faire de cette façon c'est ce que j'ai fini par faire – mcgrailm

0

Vous pouvez ajouter un bouton Submit à votre formulaire et émuler un clic sur le bouton. Cela ne résout pas votre but.

+0

je ne veux pas simuler un clic mais je vous remercie – mcgrailm

0

Cela devrait faire l'affaire:

$('#form_id #submitbutton_id').val('your value'); 
+0

mais le point est que je veux ignorer les boutons comme si il n'y avait pas de boutons – mcgrailm

2

.submit() vous obtiendrez le traditionnel soumettez cela se produit POST/GET avec l'actualisation de la page.

Pour ajax, vous devrez utiliser soit $ .post, $ .get ou .ajax $ - par exemple:

var aaa = $("#your_form").serialize(); 
$.post("your_url",aaa,function(response){/*do something*/},"json"); 

En ce qui cliquant de boutons concerne, si vous avez plusieurs boutons qui peut éventuellement soumettre un formulaire. Vous pouvez utiliser des champs cachés dans le formulaire. Avant de soumettre le formulaire, modifiez le champ masqué en fonction du bouton sur lequel vous avez appuyé.

$(".submit_buttons").click(function(){ 

$("#my_hidden_input").val($(this).attr("rel")); 

/* 
above serialize and ajax post code 
*/ 

}); 

HTML:

<input type="button" class="submit_buttons" rel="special_button1" value="Button 1"/> 
<input type="hidden" id="my_hidden_input" /> 

Lorsque j'utilise ce plugin de validation, voici comment je vais à ce sujet.

$("#right_form").validate(); //To add validation to the form 

validate9 = $("#right_form").validate().form(); //Check if the form validates 

Utilisez ensuite if pour vérifier validate9 est true et soumettre à l'aide $.post().

Ajax normal est assez simple.

Quelques raisons pour lesquelles je pense que vous utilisez iframe probablement soumettre le formulaire:
) Son doit être fait de cette façon (certains besoins inchangeable).
) Vous voulez télécharger des fichiers en utilisant ajax.

Ref: JS iframe limitations.

Je ne sais pas si cela aide, mais, si vous comprendre cela s'il vous plaît poster une réponse à nous faire savoir comment vous avez pris soin de cela.

+0

non pas ce que je cherche non plus je sais comment utiliser ajax déjà faire ça je vais éditer mon post je suppose que je dois ajouter plus de détails – mcgrailm

+0

lire le edit, semble compliqué, ne peut toujours pas envelopper ma tête autour de ce qui se passe. – DMin

+0

Je pense qu'il n'y a pas un moyen de faire ce que cela se résume à est que je ne veux pas simuler un clic de souris Je veux attacher une clé: valeur à l'action soumettre lorsque je lance .submit() mais Je ne veux pas simuler ou manipuler le dom je pourrais le faire facilement en ajoutant à ma propriété obj.data mais parce que son exécution de la charge iframe js et la boîte de dialogue jquery est dans le parent je ne peux pas le définir ainsi je espérait que je serais en mesure de le passer dans l'appel .submit() ... suivre? – mcgrailm

1

La valeur de soumission est simplement passée en paramètre. Donc si vous avez:

<input type="submit" name="mysubmit" value="click"/> 

alors la requête contiendra un paramètre de requête mysubmit = click.

Il suffit donc ajouter un type d'entrée cachée comme ceci:

<input type="hidden" name="mysubmit" value="click"/> 
2
$('#myform').submit(function(event){ 
     /* stop form from submitting normally */ 
     event.preventDefault(); 

     // get form data and include value from submit button 
     var post_data = form.serializeArray(); 
     post_data.push({name: event.originalEvent.explicitOriginalTarget.name, 
         value: event.originalEvent.explicitOriginalTarget.value 
        }); 

     // ... 
    } 
14

https://stackoverflow.com/a/993897/215887 a fonctionné pour moi

Et bien en fait je l'ai fait de cette façon:

$('<input />').attr('type', 'hidden') 
       .attr('name', 'myButton') 
       .attr('value', 'MyButton') 
       .appendTo('#my-form'); 
$('#my-form').submit();