在jQuery提交中设置提交值

时间:2010-08-20 13:53:46

标签: jquery forms

我想使用jQuery提交表单,我可以这样做

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

这一切都很好,但通常有人点击提交按钮而不是提交按钮有值,所以当我通过jQuery提交时我还需要设置提交值我该怎么做?

修改

正如一些答案所指出的,我可以通过模拟用户点击来做到这一点,但我不想这样做,我想在我使用.submit()命令时传递提交值(如果可能的话)

最终使用ajax表单提交

**澄清**

好吧所以我有jQuery设置使用jquery validate并且有一个像这样的提交处理程序

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

然后调用我的函数我调用run_ajax传递和对象包含有关我想要什么类型的ajax以及你有什么的信息。

并最终运行此

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

,其中

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

因此,当提交表单时,所有发生的一切都很好。

所以我将带有此表单的页面加载到jquery对话框中,我希望他们能够单击对话框中触发表单提交的按钮,并告诉表单请求提交的是什么类型的提交

希望这很清楚,现在很抱歉混淆

7 个答案:

答案 0 :(得分:17)

https://stackoverflow.com/a/993897/215887为我工作

其实我这样做了:

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

答案 1 :(得分:14)

一种快捷方式是$('#myform_id #submitButtonID').click();

答案 2 :(得分:3)

.submit()将为您提供在页面刷新时发生POST / GET的传统提交。

对于ajax,您需要使用$ .post,$ .get或$ .ajax - 例如:

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提交表单的几个原因:
1 )必须以这种方式完成(一些不可改变的要求) 2 )您想使用ajax上传一些文件。

参考:JS iframe limitations.

不确定这是否有帮助,但是,如果你想出来,请发一个答案告诉我们你是如何处理的。

答案 3 :(得分: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
                     });

      // ...
   }

答案 4 :(得分:1)

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

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

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

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

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

答案 5 :(得分:0)

您可以在表单中添加Submit按钮,并模拟按钮上的单击。它不能解决你的目的。

答案 6 :(得分:0)

这应该可以解决问题:

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