2014-03-28 3 views
1

Я использую автозаполнение KendoUI, заключенное в <form>. Если вы нажмете кнопку ввода, когда параметры автозаполнения открыты, ввод только закрывает параметры, и вам нужно нажать Enter еще раз, чтобы отправить форму. Прослушивание нажатий клавиш на входе для проверки при нажатии кнопки не работает; первый вход никогда не регистрируется. Я попытался прослушивать событие change элемента управления KendoUI и событие close, чтобы выполнить javascript для отправки формы вручную, но я не могу получить что-либо, что делает первый вход, чтобы отправить форму без плохих побочных эффектов. Вот HTML:KendoUI Autocomplete Отправить форму

<form action="@Url.Content("~/Metro/UserAction/SearchLibrary")" id="searchform" method="get" name="searchform"> 
<div> 
    <input name="keywords" id="products" style="width: 300px; margin-right: 10px; font-family: Verdana; font-size: 12px;" /> 
</div> 
</form> 

Здесь управление:

var autocomplete = $("#products").kendoAutoComplete({ 
     dataTextField: "SearchTerm", 
     filter: "contains", 
     template: '<span>#: data.ContentName #</span>', 
     minLength: 3, 
     dataSource: [], 
     select: onSelect, 
     change: function (e) { 
      if (search) { 
       if ($("#products").is(":focus")) { 
        $("#searchform").submit(); 
       } 
      } 
      else { 
       search = true; 
      } 
     } 
    }).data("kendoAutoComplete"); 

    $("#products").focusout(function() { 
     autocomplete.close(); 
    }); 

Я добавлю, что focusout было необходимо, поскольку в противном случае автозаполнение не закрывал ... Я не знаю, почему это был случай, потому что демонстрации закрываются и не нуждаются в дополнительной логике.

Любая помощь будет оценена по достоинству.

ответ

1

Что такое search? У вас это изначально определено?

Когда я пробовал свой код, он работал нормально, без focusout, одним щелчком мыши, ... как только я определил поиск. Here что я пробовал:

var autocomplete = $("#products").kendoAutoComplete({ 
    dataTextField: "SearchTerm", 
    filter: "contains", 
    template: '<span>#: data.ContentName #</span>', 
    minLength: 1, 
    dataSource: ds, 
    change: function (e) { 
     if ($("#products").is(":focus")) { 
      $("#searchform").submit(); 
     } 
    } 
}).data("kendoAutoComplete"); 
+0

Я согласен с тем, что ваша скрипка работает так, как мне нужен мой код. Однако по какой-то причине мой автозаполненный раскрывающийся список не закрывается, когда вы нажимаете на страницу, в которой он находится. Он зависает, поэтому мне нужен бит «focusout». Это бесполезно, потому что он запускает событие изменения, которое каким-то образом пропускает «$ (« # products »). Is («: focus »)), а затем отправляет форму, если вы выходите из страницы. Любые идеи, почему мои предложения не будут закрыты, когда фокус потерян? Не уверен, что вы имеете в виду под поиском. Где вы видите элемент под названием 'search' в моем коде? Datasource добавляется после вызова ajax. –

+0

Глупо меня ... Дух. Поиск - это var, который изначально определен, чтобы позволить мне обновить значение автозаполнения, не отправляя другой поисковый запрос. Для целей этого вопроса его необходимо устранить. –

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