2016-12-21 3 views
1

Использование 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 
    } 

}, 

В коде выше, я связываю SearchBox на 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); 
         }); 

        }, 
+3

В первом 'event.preventDefault()' в теле вы произнесли его 'event.peventDefault()'. – MasterBob

+3

В его коде написано правильно. –

+0

попробуйте 'unbind' перед связыванием другой функции с тем же объектом –

ответ

3

В приведенном выше коде, я связываю SearchBox на KeyUp события (chatSearchFriends).

Вы не можете прекратить распространение клавиши, находящейся на клавише вверх. Мероприятие уже состоялось. Он должен быть включен или нажат.

+0

работает, как только я перешел на keydown, спасибо – 112233

Смежные вопросы