jQuery 提交();不适用于火狐
Posted
技术标签:
【中文标题】jQuery 提交();不适用于火狐【英文标题】:jquery submit(); not working for firefox 【发布时间】:2013-08-06 18:25:27 【问题描述】:我是 web 开发的新手,我正在尝试使用 jquery 和 javascript 处理表单提交。
我的 JS
$(document).ready(function ()
$('#UnitFrom').submit(function (e)
alert(); //Works for Chrome and IE... But not in firefox...
e.preventDefault(); // Form Is not submitted in Chrome and IE.. for firefox it submits the from to same url that i am in..
);
);
我的 html
<html>
<body>
<form id="UnitFrom">
<input type="submit" id="CalculateUnit" value="Submit" />
</form>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="script.js"></script>
</body>
</html>
处理表单提交的任何替代方法。
【问题讨论】:
@Sergio 没有什么不同。至少给出一个他们应该尝试的理由Error: Not enough arguments [nsIDOMWindow.alert]
只是为了“良好实践”将你的 .js 文件添加到你的头部标签上,我认为你应该将它们放在身体的末端。
【参考方案1】:
你应该写:
$('#UnitFrom').submit(function (e)
e.preventDefault(); // prevent default form submission
alert('some'); // do some stuff
);
或
$('#UnitFrom').submit(function ()
alert('some');
return false; // prevent form submission
);
【讨论】:
@ShankerPaudel 您应该接受这个答案或 JamesMontagne 的。 真正的问题是 Firefox 需要一个参数传递给alert
,所以抛出异常并且e.preventDefault();
不执行
我没有那么有名的投票! :) 很抱歉。
应该注意的是return false
除了preventDefault
之外还会stopPropagation
。【参考方案2】:
在警报中添加一些内容:
alert("TEXT HERE");
如果您检查控制台,您应该会看到类似以下的错误:
没有足够的参数 [nsIDOMWindow.alert]
抛出异常时,方法执行结束,不调用preventDefault
,允许表单提交。这就是为什么最好将preventDefault
放在函数顶部的原因,但这不是必需的。如果是 first 并且有异常,仍然会阻止默认行为。
【讨论】:
【参考方案3】:老兄,你不能先拥有alert()
,然后再拥有e.preventDefault();
。
e.preventDefault();
必须是第一个,alert()
必须是第二个。
jsfiddle:http://jsfiddle.net/mpatm/
【讨论】:
非常感谢 $('#UnitFrom').on("submit",function (e) Not With this.. $('#UnitFrom').submit(function (e) Is这两者有什么技术区别吗?? 那是不正确的。当然,您可以按任何顺序拥有它们。问题是 Firefox 需要 传递给它的参数,因此会引发异常并且e.preventDefault()
不会执行。这并不意味着它不能排在第二位
对不起,这也有效.. 谢谢 $('#UnitFrom').submit(function (e) e.preventDefault(); // 阻止默认表单提交 alert('some'); // 做一些事情 );
@ShankerPaudel .submit(func...
只是.on("submit", func...
的快捷方式。快捷方式数量有限,而.on()
允许您侦听任何事件类型
证明您可以在preventDefault
之前拥有alert
(如果您的警报没有引发异常):jsfiddle.net/nHkhg以上是关于jQuery 提交();不适用于火狐的主要内容,如果未能解决你的问题,请参考以下文章