2017-01-28 5 views
0

Im создание инструмента автозаполнения для моего сайта. Я хочу, чтобы искать для частичного совпадения (она работает только тогда, когда «*» является последним символом)Как активировать функцию после нажатия клавиши?

Так что у меня этот код:

<script type="text/javascript"> 
 

 
     $('.search-form').click(function() { 
 
      \t var self = this; 
 
      \t event.preventDefault ? event.preventDefault() : event.returnValue = false; 
 
      
 

 
      var searchfield = $('.input-block-level'); 
 
      searchfield.val(searchfield.val() + "*"); 
 
      
 
      \t self.submit(); 
 
     }); 
 

 
</script>

Что она делает это дает me "*" сразу после нажатия в поле поиска и отправки.

Мне нужна функция, которая помещает звездочки в качестве последнего символа сразу после нажатия (поэтому, когда пользователь начинает вводить символ «*», является последним символом) и ждет, когда человек нажмет кнопку «Отправить» (или нет).

Любые идеи кто-нибудь?

Пожалуйста, помогите

+1

Какое тэг "java" должно быть сделано в этом вопросе? –

+0

наверняка ... это то, что $ ('. Search-form'). *** щелчок *** делает! реагировать на *** щелчок *** событие ... –

ответ

0

я предполагаю .search-форму, которая в настоящее время щелкнули является вся форма? Поэтому, когда вы нажимаете в поле поиска для ввода, выполняется вся функция обратного вызова для объекта click, включающая self.submit().

Думаю, вам нужно разделить две функции на свои собственные обработчики событий. Searchfield.val (searchfield.val() + "*"); должен запускаться, когда кто-то нажимает на $ ('. input-block-level') ;, и функция отправки должна быть прикреплена к самой кнопке отправки.

0

Что вы ищете, если я правильно понял, является дополнительным слушателем событий для события keypress или keyup. Но вы должны заменять asteriks каждый раз, когда происходит пожар. Попробуйте следующее:

$('.input-block-level').keypress(function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    if(/[a-z]/ig.test(e.key)) { 
     $(this).val($(this).val().replace(/\*$/g,'') + e.key + '*'); 
    } 
}); 
+0

ВЫ МУЖЧИНЫ !!! Спасибо огромное! Он работает! Небольшая проблема заключается в том, что она работает только с физической клавиатурой, когда я печатаю на своем мобильном устройстве, она показывает «undefined *» - любая идея, как это исправить? –

+0

Также, когда я нажимаю Enter, он печатает «enter». Можно ли сделать эту функцию только для a-z? –

+0

уверен, что я отредактировал решение и добавил RegExp. @ MarcinStańczyk – NonPolynomial

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