2013-03-27 69 views
6

Metin kutusunun yapışmasını engellemek için bir görevim var.Yalnızca alfabetik karakterler yapıştırmaya izin vermelidir. KodumSadece alfabetik harfler için onpaste nasıl etkinleştirilir

<b>Name</b> 
<input type="text" id="name" onpaste="return false"/> 

onpaste = vererek, "yanlış dönüş" hiçbir değer yapıştırılır. Bu sorunu nasıl çözebilirim?

$('#name').bind('paste', function(){ 
    var self = this; 
    setTimeout(function() { 
     if(!/^[a-zA-Z]+$/.test($(self).val())) 
      $(self).val(''); 
    }, 0);  
}); 

Sen html onpaste="return false" kaldırmak zorunda:

+0

$ ('input') .bind ('copy paste', işlev (e) { e.preventDefault(); }); – Okky

+0

Bu, kopyalamayı ve yapıştırmayı devre dışı bırakır – Okky

+0

Bu, [tag: jquery-validate] eklentisi ile kesinlikle ilgisi yoktur. Düzenlenmiş etiketler. – Sparky

cevap

2

bu çalışıyor, daha önce bazı hatalar yapılmış!

Bir çalışma örneği

burada bulunabilir: JS Fiddle

+0

Onun çalışmıyor ... Başka bir örnek olsun – Niths

+0

@Nithu Hey adam, bazı hatalar yaptım. Bunlar sabit ve işe yarıyor! – Rob

+0

@Nithu Çalışmalı. lütfen tekrar deneyin –

0

yerleştirin onpaste değerin içinde bir işleve bir çağrı. Sonra, bu işlevin içinde, alfabetik olmayan karakterleri ayıklayın.

Daha fazla ayrıntı için this question adresine bakın.

+0

Başka örnek gösterebilir misiniz? – Niths

+0

Onpaste etkinliğinde alfabetik olmayan karakterleri ayıklamak için nasıl giderdiniz. Girdi değeri değiştirilmeden önce 'macun 'olayı tetiklenir. Giriş değerinin – C5H8NNaO4

+0

Doğru olarak değiştirilmesi için bir Zaman Aşımına veya başka bir şeye ihtiyacınız olacaktır; bu "referans" bağlantısında, bir zaman aşımı kullanılır. – WEFX

2

Bu kod bir giriş alanına bir değer yapıştırarak field.On ayrı girişteki numaralardan diğer karakterlerin yapıştırma kısıtlamak kodu güncelledik

$(".alphabetOnly").bind('paste', function(e) { 
    var self = this; 
    setTimeout(function(e) { 
    var val = $(self).val(); 
    if (val != '0') { 
     if (val.match(/^[0-9]+$/) != null) { 
     $(".alphabetOnly").val(""); 
     } 
     $(this).val(val); 
    } 
    }, 0); 
}); 

bu kodu deneyin m, regex ile değeri test etme, eğer koşul doğruysa, değer ayarlanacaktır, yoksa giriş değerini boşaltacağım. Benim durumumda, diğer karakterleri sayılar dışında kısıtlamak zorundaydım, regex'i Gereksiniminiz

$(".numbersOnly").bind('paste', function(e) { 
     var self = this; 
     setTimeout(function(e) { 
      var val = $(self).val(); 
      if (val != '0') { 
       var regx = new RegExp(/^[0-9]+$/); 
       if (!regx.test(val)) { 
        $(".numbersOnly").val(""); 
       } 
       $(this).val(val); 
      } 
     }, 0); 
    }); 
+0

Kendinden açıklayıcı bir cevap sadece harika. Bu yüzden cevabınız ve bu kodun nasıl çalıştığını biraz açıklar mısınız? –

+0

Bu kod, giriş alanındaki sayılardan ayrı olarak diğer karakterlerin yapıştırılmasını kısıtlar. Bir giriş alanına bir değer yapıştırırken, koşul doğruysa, değer ayarlanır, yoksa ikincisini regex ile test ediyorum. Giriş değerini boşaltma.Benim sayılar dışında diğer karakterleri kısıtlamak zorunda kaldım, ihtiyacınıza göre regex değiştirebilirsiniz –

+0

Harika.! İyi bir açıklama için oy verildi. –

İlgili konular