问题标题是什么。我正在使用SpringMVC,但这真的无关紧要。我只需要能够传递提交按钮name=value
以及其余的表单参数以进行验证和控制。以下示例澄清:
我正在使用的HTML:
<form action='somepage.htm' method='post'>
<input name='somename' value='bob' />
<input type='submit' name='mybutton' value='click me' />
</form>
我正在使用的JavaScript(使用jQuery):
$('form').submit(function() {
$('input[type="submit"]', this).attr('disabled','disabled');
return true;
}
所以HTTP POST请求看起来像没有JavaScript事件绑定:
somepage.htm?somename=bob&mybutton=click%20me
使用绑定事件,它会排除按钮参数:
somepage.htm?somename=bob
我需要能够禁用按钮并仍然将按钮值发送到服务器进行处理。
谢谢!
SOLUTION:
我实际用来解决这个问题的代码是:
$(document).ready(function() {
$('input[type="submit"]').click(function() {
var clone = $(this).clone();
$(clone).attr("type","hidden");
$(this).attr('disabled','disabled');
$(clone).appendTo($(this).parents('form')[0]);
return true;
});
});
如果有人想知道,在表单中的字段上按Enter确实会触发表单中第一个提交按钮的点击事件!
答案 0 :(得分:1)
无法提交已停用的输入。
http://www.w3.org/TR/html4/interact/forms.html#h-17.12
所以可能的方法是添加隐藏元素<input type='hidden' value='foo' name='bar'/>
以激发另一端的验证方法。
答案 1 :(得分:1)
我认为,如果单击提交按钮,那么它的值也将被提交,就像表格的其余部分一样。