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 #myresultsdiv.
Kiedy klikam na ten przeanalizowany element li, chcę ustawić wartość z li na wejście i ukryć #myresultsdiv
$("#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()?
blurnaprawdę 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ś loglub alert $(this).html()żeby się upewnić?
blur()i click()ładowarki, nie ma akcji po blur()końce