我正在尝试禁用触发onSubmit的默认确认框。我已经尝试了一段时间但没有成功。这就是我试过的......
我的标记
<form method="post" action="special.php" id="myForm" onsubmit="return confirm('Are you sure you ready to submit this order?\n\n')">
//input fields
</form>
我的JavaScript
$('.excelDL').click(function(){
$('#myForm').trigger('submit', function(e){
window.alert = function() {}; //overwrite default alert
$.post('mail.php', $(this).serialize(), function (data) {})
e.preventDefault();
});
});
答案 0 :(得分:2)
由于onsubmit="return confirm(...)"
上的<form>
属性,系统会显示确认框。如果删除它,则在通过JQuery提交表单时不会出现确认对话框。
如果您在使用$('#myForm').trigger(...)
代码提交表单时需要此确认显示 ,请删除window.alert = function() {};
行并添加第$('#myForm').submit(function(){ return true; });
行你打电话给.trigger()
。这将在提交之前删除表单的onsubmit
处理程序。
尝试覆盖内置方法(如confirm()
)通常是一个坏主意,不要再调用它们,这是一个更好的主意。
答案 1 :(得分:1)
首先,你没有发出警报,你正在确认。所以改变 window.alert = function(){}; 至 window.confirm = function(){};
然后将其移到提交函数之外,以便在提交发生之前覆盖本机函数。
答案 2 :(得分:1)
jQuery文档没有提到你可以将函数传递给.trigger
作为第二个参数,我不相信它确实有效。
如果您只想在不触发.submit
的情况下发出Ajax请求,则可以直接拨打电话
$.post('mail.php', $('#myForm').serialize(), function (data) {});
或仅触发使用.triggerHandler
与jQuery绑定的事件处理程序。在这两种情况下,都不会生成本机submit
事件,也不会触发以其他方式绑定的事件处理程序。
正如其他人所说,使用jQuery绑定所有事件处理程序而不是使用内联事件处理程序也会改进代码。
答案 3 :(得分:0)
把它拿出来
onsubmit="return confirm('Are you sure you ready to submit this order?\n\n')"
然后您可以手动决定何时在此功能中使用警报
$('#myForm').trigger('submit', function(e){
// cal the confirm here , or write your own pop up script that looks the way you want.
});