2012-11-27 11 views
11

Mam następujące http://jsfiddle.net/TgBzB/3/ i chcę wyczyścić pole autouzupełniania, gdy użytkownik wybrał element. Poniższy kod tego nie robi: -Wyczyść wartość autouzupełniania podczas zmiany Wybierz zmianę

$("#input").data("kendoAutoComplete").value(""); 

Czy to możliwe?

//create AutoComplete UI component 
$("#input").kendoAutoComplete({ 
    dataSource: data, 
    filter: "startswith", 
    placeholder: "Select country...", 
    select: function(e) { 
     var dataItem = this.dataItem(e.item.index()); 
     $('#list').append("<li>" + dataItem + "</li>"); 
     //How do I clear the #input here? 
     $("#input").data("kendoAutoComplete").value(""); 
    } 
}); 

Odpowiedz

14

Twój kod usuwa dane wejściowe, ale zdarzenie select uruchamia się wcześniej i wartość jest dodawana po. Co trzeba zrobić, to wyczyścić wejście na change imprezy:

$("#input").kendoAutoComplete({ 
    dataSource: data, 
    filter: "startswith", 
    placeholder: "Select country...", 
    select: function(e) { 
     var dataItem = this.dataItem(e.item.index()); 
     $('#list').append("<li>" + dataItem + "</li>"); 
    }, 
    change: function(e) { 
     $("#input").data("kendoAutoComplete").value(""); 
    } 
}); 
+0

Ta, powinien pomyśleć o tym nieco więcej: – Rippo

+0

odkryli również ładniejszy czystszy sposób, ale nadal zachować ten zaakceptowana odpowiedź ... – Rippo

+0

@Rippo tak miłe rozwiązanie rzeczywiście ponieważ ponadto nie robi tracisz poprzednią wartość, jeśli pole traci skupienie, nie wybierając wartości (która wyzwala zdarzenie zmiany, ale nie wybranej) ... –

3

Jest też inna alternatywa, która działa tak samo dobrze, zamiast usuwania go po zdarzeniu zmiany po prostu zatrzymać wyświetlanie w pierwszej kolejności za pomocą e.preventDefault();

... 
select: function(e) { 
     var dataItem = this.dataItem(e.item.index()); 
     $('#list').append("<li>" + dataItem + "</li>"); 
     $("#input").data("kendoAutoComplete").value(""); 
     e.preventDefault(); 
} 
... 

zaktualizowaniu jsFiddle http://jsfiddle.net/rippo/TgBzB/8/

-3

prostu za pomocą tego można wyczyścić auto kompletne

 $("#autoCompleteName").val(""); 
+0

nie będzie działać! jeśli jest więcej niż jeden element – Asif

0
select: function(e) { 

.... e.preventDefault();

}

przyzwyczajenie pozwalają wyszukiwać samo słowo kluczowe (typ natychmiast). będzie działać, jeśli wpiszesz to samo słowo kluczowe przez znak, dając trochę milisekund.

0

Działa to dobrze, nawet jeśli używasz powiązania MVVM do wartości wielokrotnego wyboru.

select: function(e) { 
    var widget = $('#widgetId').data('kendoMultiSelect'); 
    widget.input.val(''); 
} 
Powiązane problemy