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ı foobarve altı değil arar fve sonra fove sonra foove foobvb.