我有一个表单,其中的Submit按钮不在<form>
标记内。submit按钮有一个通过jQuery的submit()
事件提交表单的click
处理程序。这个可以完美地工作。
但是,我也需要提交按钮的值来发布。由于该按钮不存在于<form>
标记中,因此它不包含在POST数组中。因此,我需要设计一种方法来在提交表单时传递一个额外的变量。
关于不能实现这一点的一些规定包括:
<form>
标记内移动。ajax
、post
或get
方法。input
字段或CSS隐藏的“提交”按钮。我设想了一些类似的东西,但显然这不起作用。
$('#admin_form').submit({'variable_name', 'true'});
有谁知道我怎么做到这一点的吗?
发布于 2011-02-24 05:20:54
您可以做的一件事就是使用onsubmit
属性让javascript在表单提交时使用提交按钮的值将post字段插入到表单中。您必须使用隐藏的输入字段来完成此操作,但是您只需在用户单击submit按钮之后添加输入字段--这样输入字段就不会从一开始就存在(希望这能满足您的要求)。所以就像这样:
function submitHandler()
{
submitVal = $('#submitButton').val();
$('#myForm').append("<input type='hidden' name='submitValue' value='"+
submitVal+"' />");
return true;
}
它会在按钮被点击时插入额外的值。
发布于 2014-09-10 22:08:10
这似乎是一个老问题,但由于我刚刚遇到了类似的问题,并(为我)找到了一个很好的解决方案,我想我应该把它贴出来:
$('#admin_form').trigger('submit', [ { 'variable_name': true } ]);
或
$('#admin_form').trigger('submit', [ 'variable_name', 'true' ]);
这取决于您是要传递一个名为variable_name
的值为true
的变量,还是要传递两个单独的变量。
为了清楚起见,这当然不会自动提交包含其余表单域的variable_name
,但是如果您有一个提交处理程序,就像我在jQuery中做的那样,变量将在事件之后作为参数传递。
发布于 2011-02-24 05:43:05
Jesse的回答是通过POST实现这一点的唯一方法。您也可以将变量附加到表单的操作值,但这将通过GET而不是POST传递该参数。如果在允许默认浏览器“提交”操作之前没有将隐藏输入附加到表单,就无法在提交之前访问HTTP请求的原始post数据-这是进退两难的问题-您打算做的是更改发送到下一个页面的HTTP POST数据/标头,但是在浏览器将数据发送到下一个页面之前,数据存在的唯一方式是将input标记嵌入到form元素中。
您可以使用的另一种解决方案是在onsubmit处理程序期间使用$.post()函数通过post发送您想要的任何数据,并在成功处理程序中重定向到您想要的页面。我知道这不符合上面的规则,但这仍然是问题的另一种可能的解决方案。
如果你想变得疯狂并遵守你所有的规则,你也可以:
https://stackoverflow.com/questions/5097184
复制相似问题