无法停止重新加载页面

时间:2016-12-21 03:11:13

标签: javascript jquery ajax

使用events.peventDefault()events.stopPropagation(),无法阻止网页重新加载。

bindSearch: function() {

    var val = null;
    var input = null;
    config.bindThis('chatSearchFriends', 'body', 'searchBar', function(value, events) {

        input = $(value);               
        val = $(input).val();
        timer = setTimeout(doSearch, 1000);
        config.showThis('clearSearch');

        var keycode = (events.keyCode ? events.keyCode : events.which);

        if (keycode == '13' && !events.shiftKey) {
            //prevent page reload
            events.stopPropagation();
            events.preventDefault();

            console.debug('enter');
        }

    });

    config.bindThis('chatClearSearch', 'body', 'clearSearch', function(value, events) {

        //clear search text
    });

    function doSearch() {

      //fetch matched search
    }

},

在上面的代码中,我在 keyup 事件(chatSearchFriends)上绑定搜索框

当用户输入时,如果按下输入键,则页面不应重新加载,这是我的担忧。

无论用户是否按下输入,ajax都会在1秒后获取匹配的数据。这是通过以下行完成的:timer = setTimeout(doSearch, 1000);

因此按Enter键只能停止重新加载页面。我不确定为什么以上都没有阻止它。

bindThis:

bindThis: function(eventKey, bindTo, selectorKey, callback, bindOnceOnly = false) {

                        this.unBindThis(bindTo, eventKey);
                        if (bindOnceOnly) {

                            this.getSelectorDOM(bindTo).one(this.events[eventKey], this.selectors[selectorKey], function(e) {

                            callback(this, e);
                            });

                            return;
                        }

                        this.getSelectorDOM(bindTo).on(this.events[eventKey], this.selectors[selectorKey], function(e) {

                            callback(this, e);
                        });

                    },

1 个答案:

答案 0 :(得分:4)

  

在上面的代码中,我在keyup事件(chatSearchFriends)上绑定了searchbox。

您无法停止按键上的按键传播。该事件已经发生。它必须在keydown或keypress上。