2013-08-20 20 views
5

Kullanıcıların içinde herhangi bir değer yapıştırmak istemediğim bir giriş alanı var. Aşağıdaki jQuery kodunu kullanıyorum ve masaüstü Tarayıcı ve iPhone Safari'de iyi çalışıyor. Sorun, Android tarayıcısında çalışmıyor.JQuery'yi kullanarak Android tarayıcısında 'Yapıştır' nasıl devre dışı bırakılır?

$('#no_paste').bind("paste", function(e) {     
     e.preventDefault(); 
}); 

İşte paste olay göndermek görünmüyor Galaxy SIII ve Android tarayıcı üzerinde test ettik fiddle

+0

Sorunun ilgili olmadığını biliyorum, ancak neden yapıştırmayı devre dışı bırakın? –

+0

Eh, e-posta onayı, şifre onayı gibi giriş alanları yapıştırılmaması gerekiyor. – CalebC

+1

Buna katılıyorum emin değilim. Düşünmek için bazı yiyecekler: [Bir kullanıcının panodan bir zorunlu form alanına yapışmasını önleme] (http://ux.stackexchange.com/q/21062/4487), [Bir kullanıcının onaylayıp kopyalayıp yapıştırmasına izin vermeliyim Kayıt formu için e-posta alanı?] (http://ux.stackexchange.com/q/1488/4487) –

cevap

1

bu. Ancak, hala bir şey yapıştırıldıktan sonra input olayını gönderir.

Kullanıcı bir alana yazıyorsa her harf için bir input olayını tetikler. Ancak, yapıştırıyorsa, yapıştırılan tüm dize için input olayı yalnızca bir kez tetiklenir. Bu gözlemi oturtmakta böyle yapıştırma engelleyebilirsiniz:

$('#ie').bind("input", function() { 
    var previousValue = $(this).data('old_value') || '', 
     newValue = $(this).val(); 

    if((newValue.length - previousValue.length) > 1) { 
     $(this).val(previousValue); 
    } 

    $(this).data('old_value', $(this).val()); 
}); 

Sen JSFiddle here bulacaksınız.

Ayrıca bunun otomatik tamamlamayı ve benzer şekilde çalışan diğer tüm garip giriş tekniklerini de engelleyeceğini lütfen unutmayın (hiç bir şey bilmiyorum).

+0

İyi hack! Ancak kullanıcı tek bir karakter yapıştırıyorsa hala çalışırdı. – CalebC

+0

@CalebC Elbette, ancak 'yapıştır' korumasını önlemek için bir kişinin tüm e-posta/şifre harfini yalnızca harfle yapıştıracağına inanmak zor. Bunu yapmak yazmaktan çok daha karmaşık ve hantaldır, bu yüzden ne anlamı var? Ancak, gerçekten sadece bir harf beklediğiniz girdi alanlarınız varsa, bunu yapın: eğer 'input' olayı gönderilmişse ancak 'keydown' olayı gönderilmeden önce 'paste' olarak sınıflandırılabilir. –

+0

Yeterince adil, bunu cevap olarak işaretleyeceğim. – CalebC

İlgili konular