Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery停止事件传播-多次_Jquery - Fatal编程技术网

jQuery停止事件传播-多次

jQuery停止事件传播-多次,jquery,Jquery,我正在尝试编写一个表单,当单击表单上的按钮时,它会向服务器发送一个JSON请求。我想禁用默认的表单行为,这样单击按钮就可以完成发送电子邮件地址的任务。其思想是从服务器返回一条消息到表单(如果出错),或者用一条成功消息替换表单(如果成功) 这是我到目前为止所拥有的(片段): 输入您的电子邮件: 添加我» $(文档).ready(函数(){ $(“#btn邀请”)。单击(功能(e){ 警惕(“呜呼”); e、 停止传播(); }); }); 第一次加载页面时,按钮的行为与预期一致。不过,在随后

我正在尝试编写一个表单,当单击表单上的按钮时,它会向服务器发送一个JSON请求。我想禁用默认的表单行为,这样单击按钮就可以完成发送电子邮件地址的任务。其思想是从服务器返回一条消息到表单(如果出错),或者用一条成功消息替换表单(如果成功)

这是我到目前为止所拥有的(片段):



输入您的电子邮件:

添加我» $(文档).ready(函数(){ $(“#btn邀请”)。单击(功能(e){ 警惕(“呜呼”); e、 停止传播(); }); });
第一次加载页面时,按钮的行为与预期一致。不过,在随后的几次(不重新加载页面)中,事件绑定似乎已“损坏”,浏览器希望转到www.example.com/backend.php


为什么会这样?

您需要使用
preventDefault
而不是
stopPropagation


.

您需要使用
preventDefault
而不是
stopPropagation

.

使用e.preventDefault()停止按钮的正常行为

$(document).ready(function(){
    $("#btn-invite").click(function(e){
    e.preventDefault();        

    //do ajax


    });
});
使用e.preventDefault()停止按钮的正常行为

$(document).ready(function(){
    $("#btn-invite").click(function(e){
    e.preventDefault();        

    //do ajax


    });
});
我正在尝试编写一个表单,向服务器发送JSON请求 单击表单上的按钮时

在这种情况下,绑定到表单提交可能更好,以防止其他提交表单的方式导致单击按钮

$(document).ready(function(){
    $("form").on("submit", function(e){
        $.ajax({
         // do you thing...
        });

        return false;
    });
});
仅在jQuery 1.7及更高版本中可用,如果您使用的jQuery版本低于1.7,请将其替换为

还要注意,
返回false
等于这两者,
event.preventDefault()
事件.stopPropagation()

我正在尝试编写一个表单,向服务器发送JSON请求 单击表单上的按钮时

在这种情况下,绑定到表单提交可能更好,以防止其他提交表单的方式导致单击按钮

$(document).ready(function(){
    $("form").on("submit", function(e){
        $.ajax({
         // do you thing...
        });

        return false;
    });
});
仅在jQuery 1.7及更高版本中可用,如果您使用的jQuery版本低于1.7,请将其替换为


还要注意,
返回false
等于这两者,
event.preventDefault()
事件.stopPropagation()

使用
e.preventDefault()
代替
e.stopPropagation()
,或者用事件处理程序处理
form.submit()
。另外,使用
$(“form”).submit(函数
而不是
$(“按钮”)。单击(功能
否则,按enter键仍可以提交表单。@Archer您的评论是一个很好的答案,应该作为一个完整的答案提交。@KevinB同意,但他们确实声明将用成功消息替换表单。如果我对上述评论的理解是正确的,那么我应该处理for.submit事件并添加一个
预防efault()
-从而有效地禁用表单默认行为(即Enter将不再提交表单),然后还可以像我当前所做的那样处理按钮单击,但使用
preventDefault()
而不是
stopPropagation()
?-对吗?使用
e.preventDefault()
而不是
e.stopPropagation())
,或使用事件处理程序处理
form.submit()
。此外,请使用
$(“表单”)。提交(函数
,而不是
$(“按钮”)。单击(功能
否则,按enter键仍可以提交表单。@Archer您的评论是一个很好的答案,应该作为一个完整的答案提交。@KevinB同意,但他们确实声明将用成功消息替换表单。如果我对上述评论的理解是正确的,那么我应该处理for.submit事件并添加一个
预防efault()
-从而有效地禁用表单默认行为(即Enter将不再提交表单),然后还可以像我当前所做的那样处理按钮单击,但使用
preventDefault()
而不是
stopPropagation()
?-对吗?你知道JSFIDLE中有一个Javascript窗格,没有必要将它放在HTML窗格中吗?@RobertKoritnik是的,但这是一个简单的示例,我只是使用了提供的代码。我很清楚巨大的“Javascript”窗格。您确实意识到JSFIDLE中有一个Javascript窗格,没有必要将其放在HTML窗格中?@RobertKoritnik是的,但这是一个简单的示例,我只是使用了提供的代码。我非常了解巨大的“Javascript”窗格……并调用
preventDefault()
处理程序中的第一件事,而不是OP做的最后一件事…并调用
preventDefault()
处理程序中的第一件事,而不是OP做的最后一件事。