<select>
ma ten interfejs API. O co chodzi <input>
?
174
Możesz użyć .change()
$('input[name=myInput]').change(function() { ... });
Jednak to zdarzenie zostanie uruchomione tylko wtedy, gdy selektor straci ostrość, więc będziesz musiał kliknąć gdzie indziej, aby to zadziałało.
Jeśli to nie jest dla Ciebie odpowiednie, możesz użyć innych zdarzeń jQuery, takich jak keyup , keydown lub keypress - w zależności od dokładnego efektu, jaki chcesz.
change
zostanie uruchomiona tylko wtedy, gdy element wejściowy straci ostrość. Istnieje równieżinput
zdarzenie, które uruchamia się za każdym razem, gdy pole tekstowe aktualizuje się bez konieczności utraty koncentracji. W przeciwieństwie do kluczowych wydarzeń działa również w przypadku wklejania / przeciągania tekstu.change
nie jest obsługiwany przez IE9, możesz użyćfocusout
tego samego zachowaniaJak @pimvdb powiedział w swoim komentarzu,
(Zobacz dokumentację ).
To jest tak przydatne, że warto to udzielić w odpowiedzi. Obecnie (v1.8 *?) Nie ma wygody fn .input () w jquery, więc sposobem na to jest
źródło
$('form').on('change input', function);
załatwiło mi sprawę. Dzięki.Sugerowałbym użycie zdarzenia keyup jak poniżej:
Istnieje kilka sposobów osiągnięcia tego samego wyniku, więc myślę, że zależy to od preferencji i zależy od tego, jak dokładnie chcesz, aby działał.
Aktualizacja: działa tylko w przypadku ręcznego wprowadzania danych, a nie kopiowania i wklejania.
Do kopiowania i wklejania polecam:
źródło
Oto kod, którego używam:
Działa to całkiem nieźle, szczególnie w połączeniu z
jqGrid
kontrolką. Możesz po prostu wpisać tekst w polu tekstowym i natychmiast wyświetlić wyniki w swoimjqGrid
.źródło
Jest jeden i tylko jeden niezawodny sposób, aby to zrobić , a jest to pobieranie wartości w określonym przedziale czasu i porównywanie jej z wartością przechowywaną w pamięci podręcznej.
Powodem, dla którego jest to jedyny sposób, jest to, że istnieje wiele sposobów zmiany pola wejściowego za pomocą różnych danych wejściowych (klawiatura, mysz, wklej, historia przeglądarki, wprowadzanie głosu itp.) I nigdy nie można ich wszystkich wykryć za pomocą standardowych zdarzeń w krzyżyku -środowisko przeglądarki.
Na szczęście dzięki infrastrukturze zdarzeń w jQuery bardzo łatwo jest dodać własne zdarzenie inputchange. Zrobiłem to tutaj:
Używaj go jak:
$('input').on('inputchange', function() { console.log(this.value) });
Jest tutaj demo: http://jsfiddle.net/LGAWY/
Jeśli boisz się wielu interwałów, możesz powiązać / odpiąć to wydarzenie w
focus
/blur
.źródło
$('body').on('inputchange', 'input', function() { console.log(this.value) });
:? Albo nie, jak wspomniano tutaj: github.com/EightMedia/hammer.js/pull/98 ?Zalecam użycie
this
słowa kluczowego, aby uzyskać dostęp do całego elementu, abyś był w stanie zrobić wszystko, czego potrzebujesz z tym elementem.źródło
Poniższe działania będą działać, nawet jeśli są to wywołania dynamiczne / Ajax.
Scenariusz:
HTML,
Mam nadzieję, że ten działający kod pomoże komuś, kto próbuje uzyskać dostęp dynamiczny / połączenia Ajax ...
źródło
źródło
Możesz po prostu pracować z identyfikatorem
źródło
Możesz to zrobić na różne sposoby, jednym z nich jest keyup . Ale poniżej podam przykład ze zmianą.
Uwaga: wprowadź [name = "vat_id"] zastąp swoim identyfikatorem lub nazwą wejściową .
źródło
Jeśli chcesz wywołać zdarzenie podczas pisania , użyj następujących poleceń:
Jeśli chcesz wywołać zdarzenie w momencie opuszczenia pola wejściowego , użyj:
źródło
$(document).on('change', 'input[name=myInput]', function() { ... });
źródło
To zadziałało dla mnie. Jeśli pole z nazwą fieldA kliknięciu lub dowolny klawisz wszedł aktualizuje pole z id fieldB .
źródło
Możesz użyć
.keypress()
.Weźmy na przykład pod uwagę HTML:
Program obsługi zdarzeń można powiązać z polem wejściowym:
Całkowicie zgadzam się z Andym; wszystko zależy od tego, jak chcesz, aby działało.
źródło