Doğru Cevap
-
Aslında yapmak istediğiniz şey çok basit. keyUp içine içinedeki delay ın önüne .stop() eklerseniz her key basışınızda delay işlemi durdurulur. Bu şekilde javascript sizden geride kalmaz.
Edit: Aşağıdaki kod ile sorun çözülmüştür.
var delay = (function(){ var timer = 0; return function(callback, ms){ clearTimeout (timer); timer = setTimeout(callback, ms); }; })(); $('#target').keyup(function(e){ var video = $("#target").val(); var Karakter = String.fromCharCode(e.which); delay(function(){ if (/^[A-Za-z]+$/.test(Karakter) || /^[0-9]+$/.test(Karakter)) { $('#sonuc').load('sonuc.php?v='+encodeURIComponent(video)); } }, 1000 ); });
-
remy1
hocam ben delay() derken lafın gelişi demiştim. ben delay ile fonksiyon geciktirmeyi bulamamıştım eğer öyle daha iyiyse onu da yazarsanız sevinirim.
setTimeout(sample,500);
ben delay'i yukarıdaki şekilde sağlıyorum. zaman bitince sample fonksiyonum çalışıyor. stop()'u bunun neresine koyacağım? buna koyulmazsa veya delay() ve stop()'un ikisininde kullanılarak yapılmış hali daha iyiyse onu yazar mısınız?11 yıl önce yazılmış -
Kesali
Kodunuzun timeout kısmını yollarmısnız. Bir bakalım neler yapabiliriz.
Örnek kod.
$("#button").click(function(){ $(this).stop().delay(1000).trigger("sample"); });
11 yıl önce yazılmış 11 yıl önce güncellenmiş -
remy1
timeout derken ne demek istediniz hocam?
eğer yapılacak işlem diyorsanız;
$('#sonuc').load('sonuc.php?v='+encodeURIComponent(video));
böyle bir load yapıyorum.11 yıl önce yazılmış -
remy1
verdiğiniz kodu koydum. ama çalışmadı. keyup'ın içinde girilen değerrin karakter ve rakam olup olmadığının kontrolünün içine koydum bu arada.eğer karakter veya rakamsa delay ile fonksiyonu gerçekleştir demek istedim. ama olmadı.11 yıl önce yazılmış 11 yıl önce güncellenmiş -
Kesali
Örnek kod çalışmaz sadece delay örneği olsun diye öle bir kod. $.load kısmında bir sorun yok. İstediğiniz şey birkaç farklı şekilde yapılabilieceği için tam işinizi göreni yapmak için javascript kodunuzun setTimeout ve keyUp bölümünü eklerseniz düzenleyebilirim demek istedim.11 yıl önce yazılmış -
remy1
keyup'ı burada açıyorum.
$("#target").keyup(function (e) {
var video = $("#target").val();
var Karakter = String.fromCharCode(e.which);
burada eğer karakterse-rakamsa işlemi yap diyorum. o araya gecikmeli işlem gelmeli.
if (/^[A-Za-z]+$/.test(Karakter) || /^[0-9]+$/.test(Karakter)) {
}
}
olay bundan ibaret işlemi direk yazabiliriz de, sample fonksiyonuna da alabiliriz. benim bulduğum fonksiyona aldığı için öyle yapmıştım. settimeout'u hala anlamadım. ama kod bundan ibaret. bir de dışta document.ready var tabii ki.11 yıl önce yazılmış 11 yıl önce güncellenmiş -
Kesali
Kodunuzu modifiye ettim böyle çalışması lazım.
timeout = undefined; $("#target").keyup(function(e) { if(timeout !== undefined) { clearTimeout(timeout); } var video = $("#target").val(); var Karakter = String.fromCharCode(e.which); var timeout = setTimeout(function() { timeout = undefined; if (/^[A-Za-z]+$/.test(Karakter) || /^[0-9]+$/.test(Karakter)) { $('#sonuc').load('sonuc.php?v='+encodeURIComponent(video)); } }, 1000); });
11 yıl önce yazılmış -
remy1
veri çekmeyi başardım ama hızlı yazınca yine arkadan tek tek bana yetişiyor. son yazdığımı yüklemiyor. bu haliyle bir faydası olmaz sanırım?11 yıl önce yazılmış -
Kesali
Bazı hatalar yapmışım bende fark ettim. Şöyle bir örnek gördüm gayet güzel çalışıyor.
var delay = (function(){ var timer = 0; return function(callback, ms){ clearTimeout (timer); timer = setTimeout(callback, ms); }; })(); $('input').keyup(function() { delay(function(){ alert('Time elapsed!'); }, 1000 ); });
Sizin kodunuza uygulanmış halide burda.
var delay = (function(){ var timer = 0; return function(callback, ms){ clearTimeout (timer); timer = setTimeout(callback, ms); }; })(); $('#target').keyup(function(e){ var video = $("#target").val(); var Karakter = String.fromCharCode(e.which); delay(function(){ if (/^[A-Za-z]+$/.test(Karakter) || /^[0-9]+$/.test(Karakter)) { $('#sonuc').load('sonuc.php?v='+encodeURIComponent(video)); } }, 1000 ); });
11 yıl önce yazılmış 11 yıl önce güncellenmiş -
remy1
kusursuz çalıştı. çok teşekkürler yardımlarınız için hocam.11 yıl önce yazılmış -
Kesali
Rica ederim.11 yıl önce yazılmış
-
Cevaplar
Hiç cevap bulunamadı.