2010-08-20 67 views
14

我想使用jQuery提交我的形式,我可以做到这一点,像这样设定的jQuery提交值提交

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

和多数民众都好,但通常有人点击比提交按钮有一个值提交按钮所以当我通过jQuery进行提交时,我还需要设置提交值,我该怎么做?

编辑

由一些答案,我可以模拟用户点击做到这一点注意,但我不想这样做,我想,当我使用.submit传递提交值()命令如果可能的话

最终提交用ajax形式

** **澄清

行,所以我有jQuery的设置使用JQuery验证,具有提交处理程序,像这样

$("#myform_id").validate({ 
    submitHandler: function() { 
     run_ajax(obj); 
    } 
}); 

然后调用I功能我叫run_ajax传球和含约我想要什么类型的AJAX的信息对象和你有什么。

,并最终运行此

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

其中

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

所以当表单提交是所有的情况都不错。

所以我用这种形式为jQuery的对话框加载页面,我希望他们能够点击触发表单提交的对话框中的按钮,也讲述了形式是什么类型的请求

提交希望这是明确的,现在后悔了混乱

+0

该功能只是触发正常的表单提交。如果值没有超过,也许你应该触发提交按钮的点击事件。很多时候使用jQuery时,使用$ .ajax/$。get/$。post函数,而不是用于导航到新页面的常规表单提交。 – Fosco 2010-08-20 13:57:32

回答

11

一个快速的方法是$('#myform_id #submitButtonID').click();

+3

我不想模拟点击但谢谢 – mcgrailm 2010-08-20 14:06:19

+3

尽管不想这样做这是我最终做的 – mcgrailm 2011-10-26 16:56:27

0

您可以添加Submit按钮,您的形式和模拟按钮点击。它不是解决你的目的。

+0

我不想模拟点击但谢谢 – mcgrailm 2010-08-20 14:05:57

0

这应该做的伎俩:

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

但重点是我想忽略按钮,就好像没有按钮那样 – mcgrailm 2010-08-20 14:16:35

2

.submit()将让你传统的提交情况发生POST/GET与页面刷新。

对于Ajax,您将需要为使用.post的$,$不用彷徨或$阿贾克斯 - 如:

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

至于按键的点击来讲,如果您有多个按钮,可以提交一份表格。您可以使用隐藏字段作为表单的一部分。在提交表单之前,根据按下的按钮更改隐藏字段。

$(".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" /> 

当我用这个验证插件,这是我如何去了解它。

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

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

然后使用if检查validate9是true和使用$.post()提交。

正常的ajax非常简单。

为什么我想你也许正在使用iframe来提交表单的几个原因:
)它必须做这样(一些不可改变的要求)。
)您想使用ajax上传一些文件。

编号:JS iframe limitations.

不知道这是否会有所帮助,但是,如果你想出解决办法,请张贴的答案,让我们知道你是怎么花的订单。

+0

nope不是我在找什么我知道如何使用ajax已经在做我要编辑我的文章我想我需要添加更多细节 – mcgrailm 2010-08-20 14:27:50

+0

阅读编辑,似乎复杂的,仍然不能把我的头围绕着正在发生的事情。 – DMin 2010-08-20 16:13:07

+0

我在想没有办法做到这一点,它归结为我不想模拟鼠标点击我想附加一个键:价值提交行动时,我运行.submit()但我不想通过添加到我的obj.data属性来模拟或操纵dom我可以轻松地做到这一点,但是因为它从iframe中运行js加载并且jquery对话框在父项中,所以我无法设置它,所以我希望我能在.submit()调用中传递它... follow? – mcgrailm 2010-08-20 16:31:28

1

提交值仅作为参数传递。所以如果你有:

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

然后请求将包含请求参数mysubmit = click。

所以只需添加一个隐藏的输入类型是这样的:

<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工作对我来说

嗯,事实上我就是这么做的:

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