【发布时间】: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>
JavaScript:
$('.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() 调用表单找到了解决方法,但为什么我必须这样做?
为什么?为什么?为什么?
【问题讨论】:
-
确保在问题中包含标记,因为它是这里的关键。
标签: javascript jquery html forms