jQuery stopPropagation无法在表/移动设备上运行

时间:2016-07-19 12:42:15

标签: javascript jquery iphone ipad

我有一个登录提交表单,如下所示:

handleLoginSubmit: function() {
    $('#login-form, .login-form').submit(function (e) {
        e.stopPropagation();
        var $form = $(this);
        $.ajax({
            url: 'loginURL',
            type: 'POST',
            data: $(this).serialize(),
            success: function (r) {
                if (r.redirect) {
                    window.location = r.redirect;
                } else {
                    //Wrong username or password
                }
            }
        });
    });
},

这在我的计算机和其他计算机上工作正常。它似乎也适用于我的Android手机。但是我在iPad和iPhone上都尝试过这种方法并且都不起作用。

问题在于,当我提交表单时,我只会在屏幕上打印出这样的json数据:

{"login":true,"redirect":"https://frontpageurl"}

但它应该重定向到首页网址。

因此,登录时,在iPhone或iPad上,重定向到首页不起作用。

我首先尝试e.preventDefault(),这似乎在这个项目的其他类似部分中运行良好。然后我尝试了e.stopPropagation()e.stopImmediatePropagation()。这些似乎都没有改变任何东西。

1 个答案:

答案 0 :(得分:1)

  

我怀疑它是什么   在您的计算机和Android手机上工作。

当您在e.stopPropagation();submit电话的$.ajax()事件中使用event.preventDefault();时,我必须说这与任何事情无关。当您提交表单时,请提交。

如果您使用的是ajax,那么您要遵循的第一件事就是在您使用时停止表单提交。您可以使用handleLoginSubmit: function() { $('#login-form, .login-form').submit(function (e) { e.preventDefault(); // other code as is }, 执行此操作。所以,最好使用它:

e.stopPropagation();

关于<div class="body"> <div class="c1">blue</div> <div class="c2">pink</div> <div class="c3">green</div> <div class="c4">yellow</div> </div> ,它用于阻止事件在DOM树中冒泡,以便不执行绑定在父元素上的任何事件。在你的情况下,似乎没有发生,因为表格已经提交。