Firefox 和 Jquery/Javascript 表单提交
Firefox and Jquery/Javascript form submission
我在 Firefox 中遇到了一个问题,我试图让一个表单提交按钮在一个人点击它时显示"正在加载"(以防止用户多次提交由于网站速度慢而点击它两次/三次)。
我有这个jquery代码:
$(document).ready(function(){
$('.submitButton').click(function() {
document.aform.submit();
$('.buttonSpan').html('<button class="btn btn-primary disabled">Loading...</button>');
});
});
Chrome 可以正确执行它,但 Firefox 只会更改周围的 HTML,但不会提交表单。当我点击两次按钮时,火狐提交。如果我删除 .html() 更改的行,它也可以毫无问题地提交。
以下是供参考的表单代码:
<form name="aform" action="index.php" enctype="multipart/form-data" method="post">
...form data
<span class="buttonSpan">
<button class="btn btn-primary submitButton" name="submit"/>Submit</button>
</span>
</form>
Firefox 是否优先考虑 html 更改并忽略其他所有内容?同样,这在Chrome中工作正常,但是Firefox真的要了我的命!
谢谢!
在大多数情况下,最好使用表单上的submit
事件,而不是提交按钮的单击事件。(如果您通过按回车按钮提交表格怎么办?
$(function(){
$('form[name=aform]').submit(function() {
$('.buttonSpan', this).html('<button class="btn btn-primary disabled">Loading...</button>');
});
});
使用它时,您需要修复提交按钮的 html,如下所述。
否则,我建议找到与提交按钮相关的表单:
$(function(){
$('.submitButton').click(function() {
$(this).closest("form").submit()
.find('.buttonSpan').html('<button class="btn btn-primary disabled">Loading...</button>');
});
});
定义提交按钮的正确方法是这样的:
<input type="submit" class="btn btn-primary submitButton" value="Submit" name="submit"/>
对我有用,但是在单击处理程序期间从文档中删除按钮似乎可能会导致不一致的行为:提交表单的默认操作是否适用于在单击时拥有它的表单,还是在单击后事件时触发默认操作(无表单)?
避免这种歧义 - 不要通过用新标记替换按钮来破坏按钮。相反,请更改它:
<button type="submit" class="btn btn-primary submitButton" name="submit">Submit</button>
$('.submitButton').click(function() {
$(this).text('Loading...');
$(this).removeClass('submitButton');
$(this).addClass('disabled');
});
请注意,(a) 您不需要调用form.submit()
因为无论如何,这是提交按钮的默认操作;(b)正如蒙特所说,document.namedElement
是糟糕的形式,(c)正如d_inevitable所说,钩form.onsubmit
几乎总是比button.onclick
更好的事情 - 尽管如果您特别担心鼠标点击,可能不在这里。
不建议像在document.aform
中那样按名称访问 dom 元素。
由于窗体中已有按钮,因此应使用按钮.form
属性。
所以像
按钮点击 = 函数 () { this.form.submit();}
试试这个:
$(document).ready(function(){
$('.submitButton').click(function() {
$('.buttonSpan').html('<button class="btn btn-primary disabled">Loading...</button>');
$('form').submit();
});
});
这是一个工作示例: 在FF http://jsfiddle.net/JV68U/上测试
- JavaScript表单提交帮助
- JavaScript表单提交没有't fire asp服务器端点击功能的提交按钮
- 使用Javascript表单提交所需的HTML5
- javascript表单提交一个值应该大于另一个值x>y
- javascript表单提交函数没有't提交
- Javascript表单提交打开新窗口选项卡,然后重定向父页面
- Javascript - 表单提交时必填字段留空
- Firefox 和 Jquery/Javascript 表单提交
- Javascript 表单提交数据在提交到PayPal时不会更改
- Javascript 表单提交错误
- Javascript表单提交会创建大量的POST请求(多次提交)
- Safari 5中一个奇怪的javascript表单提交错误的解决方法是什么
- Javascript 表单提交无法正确提交
- 为什么这个Javascript表单提交脚本不起作用
- JavaScript 表单提交带有一个名为 submit 的字段
- Javascript 表单提交 prevent默认在使用 AJAX 检索表单时不起作用
- 简化 Javascript 表单提交
- JavaScript表单提交和包含提交按钮的表单之间的区别
- JavaScript表单提交不会发生任何问题
- JavaScript表单提交验证会干扰其他提交按钮