【发布时间】:2013-05-13 11:45:27
【问题描述】:
HTML:
<button class="search" name="search">search</button>
Javascript:
$('button.search').live('click', function(event) {
var newForm = jQuery('<form>', {
'action': 'http://www.google.com/search',
'target': '_top'
}).append(jQuery('<input>', {
'name': 'q',
'value': 'stack overflow',
'type': 'hidden'
}));
newForm.submit();
});
小提琴:http://jsfiddle.net/YqGLH/90/
预期行为:单击搜索按钮时,页面应转发到谷歌搜索。在最新的 Chrome、Safari 和 Opera 中按预期工作。
在最新的 FF 和 IE9 中不起作用。单击按钮静默失败,没有错误消息,没有转发发生。
我在这里错过了什么?
【问题讨论】:
-
您似乎没有将新表单附加到实际页面 - 如果您在提交前添加
.appendTo("body")会发生什么? -
@nnnnnn 我确实不添加表单,这是要求吗?在那种情况下,它在某些浏览器中工作很奇怪
-
对我来说,不添加表单感觉是错误的,但我实际上不知道它是否包含在任何特定规范中。不过,您应该很容易尝试一下...
-
@nnnnnn 就是这样,如果您愿意添加作为答案,我会接受。对此要求的一些参考也很好。
-
更简单的可以是:
window.location.href = "http://www.google.com/search?q=stack overflow";(link)
标签: javascript jquery forms cross-browser submit