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 提交();不适用于火狐的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 必需属性不适用于 AJAX 提交

jQuery Validate onclick: false 不适用于复选框或选择

jQuery提交表单两次

为啥不输入“提交”不适用于表格?

表单提交后如何在输入字段上显示表单提交值

提交按钮不适用于 html 代码