【问题标题】:jquery submit(); not working for firefoxjQuery 提交();不适用于火狐
【发布时间】: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 文件添加到你的头部标签上,我认为你应该将它们放在身体的末端。

标签: javascript jquery firefox form-submit


【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    相关资源
    最近更新 更多