Her cevabın bazı noktaları eksik, işte benim çözümüm:
$("#input").on("input", function(e) {
var input = $(this);
var val = input.val();
if (input.data("lastval") != val) {
input.data("lastval", val);
//your change action goes here
console.log(val);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="input">
<p>Try to drag the letters and copy paste</p>
Input Event
Üzerinde yangınlar Klavye girişi, fare Drag , otomatik doldurma ve Kopyala-Yapıştır Chrome ve Firefox üzerinde test. Önceki değerin kontrol edilmesi, gerçek değişiklikleri algılamasını sağlar; bu, aynı şeyi yapıştırırken veya aynı karakteri vb. Yazarken tetiklenmemesi anlamına gelir.
Çalışma örneği: http://jsfiddle.net/g6pcp/473/
Güncelleme:
Ve change function
yalnızca kullanıcı yazmayı bitirdiğinde ve değişiklik eylemini birkaç kez tetiklemeyi engellediğinde çalıştırmak isterseniz , bunu deneyebilirsiniz:
var timerid;
$("#input").on("input", function(e) {
var value = $(this).val();
if ($(this).data("lastval") != value) {
$(this).data("lastval", value);
clearTimeout(timerid);
timerid = setTimeout(function() {
//your change action goes here
console.log(value);
}, 500);
};
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="input">
Kullanıcı yazmaya başlarsa (örn. "Foobar") bu kod change action
, her harf kullanıcı türü için çalışmanızı engeller ve yalnızca kullanıcı yazmayı bıraktığında çalışır, Bu özellikle girişleri sunucuya gönderdiğinizde (örn. Arama girişleri), yollu sunucu yapar tek arayışını foobar
ve altı değil arar f
ve sonra fo
ve sonra foo
ve foob
vb.