$.submit() 不工作[重复]
Posted
技术标签:
【中文标题】$.submit() 不工作[重复]【英文标题】:$.submit() not working [duplicate] 【发布时间】:2014-09-14 23:03:44 【问题描述】:这是一件如此简单的事情,至少我是这么想的。但我就是不明白为什么会这样……
jQuery's .submit()
method。看起来很简单——给它传递一个函数作为监听器。不要传递任何东西,它会调用.trigger('submit')
。但在过去的 24 小时里,这让我非常头疼。
基本上我要做的是构建一个简单的验证脚本。用户单击表单上的提交按钮,运行一个函数来验证输入,如果一切正常,表单就会提交(默认方式,在这种情况下没有花哨的 ajax)。当尝试在 jQuery 对象或简单的 'ole html DOM 元素对象上调用 .submit
时,问题就出现了。我了解到 jQuery 杀死了 HTMLFormElement 上的原生 .submit
,所以它为什么不起作用是有道理的(我猜,但这似乎很愚蠢)。但是...为什么 jQuery 的 .trigger('submit')
(或简称为 .submit()
)不起作用?
示例(或查看Fiddle):
HTML:
<form class="comment-form" action="#" method="get">
<input type="submit" id="submit" name="submit" value="submit"/>
</form>
$('.comment-form').on('click', '#submit', function(e)
var form = e.delegateTarget;
e.preventDefault();
// For the purpose of demonstration, just setting it true
if (true)
form.submit(); // object is not a function - this makes sense since jQuery is overriding this
$(form).submit(); // nothin at all :(
$(form).trigger('submit'); // nope, nada
);
我确实通过在 HTMLFormElement 原型上使用 .call()
调用表单找到了解决方法,但为什么我必须这样做?
为什么?为什么?为什么?
【问题讨论】:
确保在问题中包含标记,因为它是这里的关键。 【参考方案1】:您将按钮命名为 submit
,因此 form.submit
现在是按钮,而不是提交功能。
换句话说,您刚刚删除了本机提交功能并将其替换为您的按钮,这就是您收到错误 “object is not a function” 的原因。
将按钮的名称更改为 submit
以外的其他名称,它将起作用。
FIDDLE
【讨论】:
只需从小提琴中删除$(form).trigger('submit');
我觉得自己像个白痴,但谢谢@adeneo。认为这很简单,但希望这会帮助其他人遇到同样的问题!
@SeeMeCode - 这实际上是一个很难发现的错误,所以不要觉得自己像个白痴,而且你不是第一个这样做的人。以上是关于$.submit() 不工作[重复]的主要内容,如果未能解决你的问题,请参考以下文章
document.getElementById("myForm").submit() 不起作用[重复]
如何防止HTMLFormElement.submit()调用表单提交[重复]。
未捕获的 TypeError:document.getElementById(...).submit 不是 HTMLDocument.<anonymous> 的函数 [重复]