我想使用如下的jquery提交:
$("#formid").submit();
除了IE6之外,它在所有浏览器中都很完美。
如何让它在IE6中运行?
答案 0 :(得分:63)
你的表单中可能有一个<input name="submit" />
,它会覆盖IE中表单的“提交”功能。
修改:
我已在其他一些浏览器中测试过。所有主流浏览器的最新版本似乎都受此问题的影响。
底线:永远不要将输入命名为“submit”,也不要将表单元素的任何其他默认属性或方法命名(例如“action”或“reset”)。有关完整概述,请参阅MDC。
答案 1 :(得分:14)
当我要通过A元素提交表单时,我遇到了类似的问题。我把href属性设置为“javascript:;”让主jQuery脚本处理实际的提交,但它在IE6中不起作用。
jQuery主脚本:
$(".submitLink").click(function(){
$(this).parent()[0].submit();
$(this).addClass("loading");
});
我的解决方案是从“javascript:;”更改href属性到“#”。
答案 2 :(得分:3)
你可以尝试$("#formid").trigger("submit")
,但我怀疑它会给你一个不同的结果。
答案 3 :(得分:2)
我最近有一个类似的问题,我在ASP.NET服务器表单中创建了一个“伪表单”(因此我无法使用另一个表单标记),我想将其发布到另一个域需要编写服务器端代码来执行远程发布。轻松回答 - 即时创建表单并提交。适用于良好的浏览器......
经过一些考验和磨难后,我意识到IE将不会按预期工作(这是一个惊喜),除非正在提交的表单已添加到DOM中。所以,这是我的解决方案。我希望它对你们有些帮助。请注意,我的所有输入和提交都在同一个容器中。 “.post-to”是带有URL的隐藏输入。
$(".post-form").click(function(ev) {
var postto = $(this).siblings(".post-to").val();
var form = document.createElement("form")
$(form).attr("id", "reg-form").attr("name", "reg-form").attr("action", postto).attr("method", "post").attr("enctype", "multipart/form-data");
$(this).siblings("input:text").each(function() {
$(form).append($(this).clone());
});
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
return false;
});
最终,这是一种享受。
答案 4 :(得分:1)
别忘了归谎;如果你在标签上
答案 5 :(得分:0)
答案 6 :(得分:-1)
...
$('.bt_ok').bind('click', function() {
$('#form_autosuggest').submit();
return false;
});
...
在IE6之后添加:return false;
答案 7 :(得分:-1)
只需添加一个
window.setTimeout(function(){
$("#formid").submit();
}, 300);