Javascript 禁用通常在提交时显示的默认警报

Javascript 禁用通常在提交时显示的默认警报,javascript,jquery,Javascript,Jquery,我试图禁用在提交时触发的默认确认框。我已经尝试了一段时间,但没有成功。这就是我试过的 我的标记 <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> 出现确认框是因为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>

出现确认框是因为onsubmit=返回确认。。。属性在你的属性上。如果删除该选项,则通过JQuery提交表单时不会出现确认对话框

如果您需要在使用$'myForm'提交表单时以外的时间显示此确认。触发器。。。代码,然后删除窗口。alert=函数{};行并添加行$'myForm'。submitfunction{return true;};在你打电话之前,扳机。这将在提交表单之前删除表单的onsubmit处理程序


通常,试图覆盖诸如confirm之类的内置方法是个坏主意。最好不要调用它们。

出现确认框,因为onsubmit=return confirm。。。属性在你的属性上。如果删除该选项,则通过JQuery提交表单时不会出现确认对话框

如果您需要在使用$'myForm'提交表单时以外的时间显示此确认。触发器。。。代码,然后删除窗口。alert=函数{};行并添加行$'myForm'。submitfunction{return true;};在你打电话之前,扳机。这将在提交表单之前删除表单的onsubmit处理程序

通常,试图覆盖内置方法(如确认)是一个坏主意,最好不要调用它们。

去掉这个

   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.

    });
把这个拿出来

   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.

    });

首先,你不是在发出警报,而是在发出确认信号。所以改变 window.alert=函数{}; 到 window.confirm=函数{}


然后将其移到submit函数之外,以便在提交之前覆盖本机函数。

首先,您不是在触发警报,而是在触发确认。所以改变 window.alert=函数{}; 到 window.confirm=函数{}


然后将其移到submit函数之外,以便在提交之前覆盖本机函数。

jQuery文档没有提到可以将函数作为第二个参数传递给.trigger,我认为它实际上不起作用

如果您只想在不触发.submit的情况下发出Ajax请求,可以直接调用

$.post('mail.php', $('#myForm').serialize(), function (data) {});
或仅触发使用绑定jQuery的事件处理程序。在这两种情况下,都不会生成本机提交事件,也不会触发以其他方式绑定的事件处理程序


正如其他人所说,用jQuery绑定所有事件处理程序而不是使用内联事件处理程序也会改进代码。

jQuery文档没有提到可以将函数作为第二个参数传递给.trigger,我认为它实际上不起作用

如果您只想在不触发.submit的情况下发出Ajax请求,可以直接调用

$.post('mail.php', $('#myForm').serialize(), function (data) {});
或仅触发使用绑定jQuery的事件处理程序。在这两种情况下,都不会生成本机提交事件,也不会触发以其他方式绑定的事件处理程序


正如其他人所说,用jQuery绑定所有事件处理程序而不是使用内联事件处理程序也会改进代码。

否,因为我需要对话框出现在所有其他实例中,但使用触发器提交表单时除外。我从未见过传递给的函数。触发器。。。而且医生也没有提到。。。它有什么作用?如果您只想调用一个函数来发出Ajax请求,那么看起来根本不需要调用.trigger。只需调用函数。我需要触发器来提交表单,因为我的ajax请求使用表单中的POST值,方式与默认的提交按钮不同。如果删除内联回调并重构为不引人注目的javascriptNo,您将更容易实现这一点,因为我需要在所有其他实例中显示对话框,除非我使用触发器提交表单。我从未见过传递给.trigger的函数。。。而且医生也没有提到。。。它有什么作用?如果您只想调用一个函数来发出Ajax请求,那么看起来根本不需要调用.trigger。只需调用函数。我需要触发器来提交表单,因为我的ajax请求使用表单中的POST值,方式与默认的提交按钮不同。如果您删除内联回调并重构为不引人注目的JavaScriptor,您将可以轻松地完成此任务。谢谢您的回复。我知道。但是,我需要对话框不出现在这个实例中,我使用触发器提交表单,并出现在所有其他实例中。。。对话框非常重要,我无法完全删除它,我只需要在这个例子中以某种方式禁用它。谢谢回复。我知道。然而,我需要对话框不出现在这个实例中,当
re我正在使用触发器提交表单,并出现在所有其他实例中。。。对话框非常重要,我无法完全删除它,我只需要在这个例子中以某种方式禁用它。@MHZ:我确信有更好的解决方案,但您必须使您的问题/代码更清晰。@MHZ:我确信有更好的解决方案,但您必须使您的问题/代码更清晰。+1,谢谢您的回答。出于某种原因,当我删除触发器并使click函数直接调用post函数时:$.post'mail.php',$'myForm'。序列化,函数数据{};这是行不通的。也没有错误。知道为什么吗?你是说没有发送Ajax请求?或者不工作意味着什么?你有没有检查过开发工具?还有,你说的是什么点击功能?您真的应该发布一个更完整的代码示例。是的,没有发送ajax请求,是的,我检查了开发人员工具,没有错误。我使用了您的建议,并将所有javascript代码替换为:$'.excelDL'.clickfunction{$'excel'.val2;$.post'mail.php',$myForm.serialize,function data{};它不起作用。您的方法不起作用的原因是,$.post需要在提交函数/提交触发器中才能起作用,直接调用时它将不起作用。@MHZ:不,这是不正确的。从何处调用方法并不重要。证据:。这也没有意义,因为Ajax与HTML表单没有任何关系。我不能告诉你为什么它不起作用。我假设您的代码中还有另一个错误,但是对于您提供的信息没有什么可说的。+1,感谢您的回复。出于某种原因,当我删除触发器并使click函数直接调用post函数时:$.post'mail.php',$'myForm'。序列化,函数数据{};这是行不通的。也没有错误。知道为什么吗?你是说没有发送Ajax请求?或者不工作意味着什么?你有没有检查过开发工具?还有,你说的是什么点击功能?您真的应该发布一个更完整的代码示例。是的,没有发送ajax请求,是的,我检查了开发人员工具,没有错误。我使用了您的建议,并将所有javascript代码替换为:$'.excelDL'.clickfunction{$'excel'.val2;$.post'mail.php',$myForm.serialize,function data{};它不起作用。您的方法不起作用的原因是,$.post需要在提交函数/提交触发器中才能起作用,直接调用时它将不起作用。@MHZ:不,这是不正确的。从何处调用方法并不重要。证据:。这也没有意义,因为Ajax与HTML表单没有任何关系。我不能告诉你为什么它不起作用。我假设您的代码中还有另一个错误,但是对于您提供的信息没有什么可说的。