Mam pole wprowadzania, w którym próbuję zasugerować autouzupełnianie. Wygląda na to kod
<input type="text" id="myinput">
<div id="myresults"></div>
W blur()
przypadku zdarzenia input chcę ukryć div wyników:
$("#myinput").live('blur',function(){
$("#myresults").hide();
});
Kiedy piszę coś do swojego wejścia, wysyłam żądanie do serwera i otrzymuję odpowiedź json, parsuję ją do struktury ul-> li i umieszczam ten ul w moim #myresults
div.
Kiedy klikam na ten przeanalizowany element li, chcę ustawić wartość z li na wejście i ukryć #myresults
div
$("#myresults ul li").live('click',function(){
$("#myinput").val($(this).html());
$("#myresults").hide();
});
Wszystko idzie dobrze, ale kiedy klikam, aby blur()
zdarzenie li było uruchamiane wcześniej, click()
a wartość danych wejściowych nie otrzymuje kodu HTML li.
Jak mogę wcześniej ustawić click()
wydarzenie blur()
?
blur
naprawdę uruchamia się po kliknięciu na li
, prawdopodobnie nie musisz wykonywać $("#myresults").hide()
w module obsługi kliknięcia. Wydaje się, że dzieje się to, że $(this).html()
zwraca pusty ciąg. Mógłbyś log
lub alert
$(this).html()
żeby się upewnić?
blur()
i click()
ładowarki, nie ma akcji po blur()
końce