【问题标题】:Setting submit value in jQuery submit在 jQuery 提交中设置提交值
【发布时间】:2010-08-20 13:53:46
【问题描述】:

我想使用 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 对话框中,我希望他们能够单击对话框中触发表单提交的按钮,并告诉表单请求的提交类型

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

【问题讨论】:

  • 那个函数只是触发正常的表单提交。如果值没有过来,也许你应该触发提交按钮的点击事件。很多时候使用 jQuery,使用 $.ajax/$.get/$.post 函数而不是导航到新页面的普通表单提交。

标签: jquery forms


【解决方案1】:

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

其实我是这样做的:

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

【讨论】:

  • 这太棒了。适用于 MVC .BeginForm 结构。如果合适,也可以将隐藏字段放在页面或视图中。
【解决方案2】:

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

【讨论】:

  • 尽管不想这样做,但我最终还是这样做了
【解决方案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.

不确定这是否有帮助,但是,如果您解决了这个问题,请发布答案,让我们知道您是如何解决这个问题的。

【讨论】:

  • 不,不是我要找的东西,我知道如何使用 ajax 已经这样做了,我要编辑我的帖子,我想我需要添加更多详细信息
  • 阅读编辑,看起来很复杂,仍然无法理解发生了什么。
  • 我认为没有办法做到这一点,归结为我不想模拟鼠标点击我想在提交操作时附加一个键:值我运行 .submit() 但我不想模拟或操作 dom 我可以通过添加到我的 obj.data 属性轻松地做到这一点,但是因为它从 iframe js 加载运行并且 jquery 对话框在我可以的父级中'没有这样设置,所以我希望我能够在 .submit() 调用中传递它...follow ?
【解决方案4】:
   $('#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
                     });

      // ...
   }

【讨论】:

    【解决方案5】:

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

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

    那么该请求将包含一个请求参数 mysubmit=click 。

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

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

    【讨论】:

      【解决方案6】:

      这应该可以解决问题:

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

      【讨论】:

      • 但关键是我想忽略按钮,就好像没有按钮一样
      【解决方案7】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-18
        • 1970-01-01
        • 2020-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多