2015-12-05 4 views
0

Я пытаюсь объявить функцию в coffeescript, которая вызывается как при подготовке документа, так и когда пользователь вводит что-то в панель поиска. В принципе, иногда поисковая панель получает визуализацию со значением, иногда пользователь вводит значение. Я хочу отобразить значок «x», чтобы очистить панель поиска, только если есть текст. Единственный способ, которым я мог понять, как сделать эту работу должен был написать один и тот же код дважды, один раз в обработчик нажатия клавиши, и один раз в документе готовый:избегать дублирования кода в coffeescript по названной функции

$ -> 
    $('.clear-search').click -> 
     $(this).prev('input').val('').focus(); 
     $('span.clear-search').hide() 

    $('#query_raw_query').keypress -> 
     if $('#query_raw_query').length > 0 
      $('span.clear-search').show() 
     else 
      $('span.clear-search').hide() 
     end 

    if $('#query_raw_query').length > 0 
     $('span.clear-search').show() 
    else 
     $('span.clear-search').hide() 
    end 

То, что я действительно хотел бы сделать, это просто создать функция, называемая check_empty или что-то еще, и просто назовите это оба места, но я не могу заставить ее работать.

Спасибо за любую помощь.

ответ

1
$ -> 
    someFunctionName = -> 
     if $('#query_raw_query').length > 0 
      $('span.clear-search').show() 
     else 
      $('span.clear-search').hide() 
     end 

    $('.clear-search').click -> 
     $(this).prev('input').val('').focus(); 
     $('span.clear-search').hide() 

    $('#query_raw_query').keypress -> 
     someFunctionName() 

    someFunctionName() 
Смежные вопросы