使用Turbolinks.visit(路径)时如何防止冒泡事件

时间:2015-01-30 13:04:46

标签: javascript jquery turbolinks

我在自己的项目中使用aspnetmvcturbolinks并且我已经重新加载页面 当用户在输入中添加文本时,Turbolinks.visit(路径)。但是,当页面改变时,我检查这个输入的keyup事件是更多的一个,我添加返回false但不起作用。

$(document).on("ready page:load", function() {
        $('input[name=keyword]').keyup(function (e) {
            alert();
            var $text = $(this).val();
            if ($text.length > 1) {
                $('html, body').animate({ scrollTop: 0 }, 600, function() {
                    Turbolinks.visit('@searchUrl' + '?keyword=' + $text);
                });
            }
            if ($text.length == 0) {
                Turbolinks.visit('@searchUrl');
            }
          return false;
        });
        $(document).on('change', 'select[name="order"]', function() {
            Turbolinks.visit('@searchUrl');
        });
        $(document).on('change', 'select[name="count"]', function() {
            Turbolinks.visit('@searchUrl');
        });
    });

什么是解决方案? 感谢

2 个答案:

答案 0 :(得分:0)

尝试使用

e.stopPropagation();

而不是

return false;

http://api.jquery.com/event.stoppropagation/

答案 1 :(得分:0)

试试这个,

如果(e.stopPropagation)e.stopPropagation();

其他e.cancelBubble = true; //其中e是事件对象

$('input[name=keyword]').keyup(function (e) {
            alert();
            var $text = $(this).val();
            if ($text.length > 1) {
                $('html, body').animate({ scrollTop: 0 }, 600, function() {
                    Turbolinks.visit('@searchUrl' + '?keyword=' + $text);
                });
            }
            if ($text.length == 0) {
                Turbolinks.visit('@searchUrl');
                }
           if(e.stopPropagation)e.stopPropagation();
           else e.cancelBubble=true;
});