繁体   English   中英

无法停止页面重新加载

[英]Unable to stop page reload

使用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)上绑定了搜索框

在用户键入内容时,如果他们按Enter键,则该页面不应重新加载,这是我的关注。

无论用户是否按Enter,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);
                        });

                    },

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

您无法停止在按下键向上时传播键。 该事件已经发生。 它必须在按下按键或按下按键时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM