【发布时间】:2011-02-23 14:08:19
【问题描述】:
我有一个带有多个提交按钮的表单。我希望我的最后一个按钮来处理提交,而不是 HTML5 规范的第一个按钮。
此时我无法更改 html,并且相当确定这需要 JS。但是当我试一试时,我陷入了令人讨厌的循环或死代码,试图阻止默认行为,然后触发我的另一个按钮。
以前有人做过吗?如果需要,页面上有 jQuery。
谢谢, 丹尼斯
【问题讨论】:
我有一个带有多个提交按钮的表单。我希望我的最后一个按钮来处理提交,而不是 HTML5 规范的第一个按钮。
此时我无法更改 html,并且相当确定这需要 JS。但是当我试一试时,我陷入了令人讨厌的循环或死代码,试图阻止默认行为,然后触发我的另一个按钮。
以前有人做过吗?如果需要,页面上有 jQuery。
谢谢, 丹尼斯
【问题讨论】:
既然你提到了 jQuery :)
如果您只想在用户按下回车键时提交表单,那么
$(function() {
$('body').keypress(function(e) {
if (e.which == 13) {
e.preventDefault();
$('#myForm').submit();
}
});
});
但是,如果您有不同的行为/表单,具体取决于单击的按钮,并且您希望 enter 键触发最后一个按钮的单击事件,那么
$(function() {
$('body').keypress(function(e) {
if (e.which == 13) {
e.preventDefault();
$('input[type="submit"]:last').click();
}
});
});
【讨论】:
e.which 返回被按下的 keyCode 并且可以跨浏览器工作。
当您不希望它提交表单时,您应该将input 元素的type 属性更改为button。 (我知道你说过你不能真正改变 HTML,但这是 最好的方法)
<input type="button" name="mybutton" class="submit-button" value="I wont submit!" />
jQuery 代码:
$('.submit-button').click(function() {
$('#secret-value-field').val($(this).val());
$(this).parents('form').submit();
});
或者类似的东西。
【讨论】: