我有一个表单,其中“提交”按钮不在<form>
标记内。提交按钮有一个click
处理程序,可以通过jQuery的submit()
事件提交表单。这非常有效。
但是,我也需要提交按钮的值进行POST。由于<form>
标记中不存在该按钮,因此它不包含在POST数组中。因此,我需要设计一种在提交表单时传递额外变量的方法。
关于不可能实现这一目标的一些规定包括:
<form>
标记内移动“提交”按钮。ajax
,post
或get
方法。input
字段或提交CSS隐藏的按钮。我设想了类似的东西,但显然这不起作用。
$('#admin_form').submit({'variable_name', 'true'});
有人对如何实现这个目标有任何想法吗?
答案 0 :(得分:35)
您可以做的一件事是使用onsubmit
属性让javascript将一个帖子字段注入表单,并在提交时使用提交按钮的值。您必须使用隐藏的输入字段执行此操作,但您只需在用户单击提交按钮后立即添加输入字段 - 因此输入字段从一开始就不存在(希望这满足您的要求) )。如下所示:
function submitHandler()
{
submitVal = $('#submitButton').val();
$('#myForm').append("<input type='hidden' name='submitValue' value='"+
submitVal+"' />");
return true;
}
单击按钮时,这会在额外值中保留。
答案 1 :(得分:3)
这似乎是一个老问题,但由于我遇到了类似的问题并找到了一个很好的解决方案(对我来说),我以为我会发布它:
$('#admin_form').trigger('submit', [ { 'variable_name': true } ]);
或
$('#admin_form').trigger('submit', [ 'variable_name', 'true' ]);
取决于您是要传递名为variable_name
的变量值为true
还是要传递2个单独的变量。
为了清楚起见,这当然不会自动提交variable_name
和其他表单字段,但如果你有一个提交处理程序,就像我在jQuery中那样,变量将作为参数传递,活动结束后。
答案 2 :(得分:1)
Jesse的回答是通过POST实现这一目标的唯一方法。您还可以将变量附加到表单的操作值,但这将通过GET而不是POST传递该参数。在允许默认浏览器“提交”操作之前没有附加到表单的隐藏输入,在提交之前无法访问HTTP请求的原始发布数据 - 它是鸡蛋困境之前的鸡 - 你是什么打算做的是更改发送到下一页的HTTP POST数据/标题,但是在浏览器将数据发布到下一页之前,数据存在的唯一方法是将输入标记嵌入到表单元素中。 / p>
您可以使用的替代解决方案是使用$ .post()函数在onsubmit处理程序中通过post发送您想要的任何数据,并在成功处理程序中重定向到您想要的页面。我知道这不符合上述规则,但也是解决问题的另一种可能方案。
如果您想要真正疯狂并遵守所有规则,您还可以:
答案 3 :(得分:0)
如果你想直接从没有编写提交处理程序而更改的元素中执行此操作,则可以使用:
<script>
$(function() {
$( ".datePicker" ).datepicker({
dateFormat: 'dd-M-yy',
onSelect: function (date) {
$('#dateChanger').append("<input type='hidden' name='changed_" + $(this).attr("name") + "' value='" + $(this).attr("value") + "' />");
$("#dateChanger").submit();
}
});
});
</script>
答案 4 :(得分:0)
on jquery 1.11.1
我是这样管理的:
short iValue = -1400;
string sResult = iValue.ToString("X2");
Console.WriteLine("Value={0} Result={1}", iValue, sResult);