2016-03-29 19 views
0

giriş kutusundaki alt çizgi ('_') kullanımını kısıtlayın (bunun dışında -).
alt çizgiye izin veriyor. Bunu kısıtlamak istiyorum. Bu benim demo kodu: https://plnkr.co/edit/Solap6eBGssvn7wVjkFn?p=previewutf-8 karakterlerine izin veren ancak alt-karakterleri ve özel karakterleri kısıtlayan

<!DOCTYPE html> 
<html> 

<head> 
    <link rel="stylesheet" href="style.css"> 
    <script src="script.js"></script> 
</head> 

<body> 
    <SCRIPT LANGUAGE="JavaScript"> 
    <!-- 
    function demoMatchClick() { 
     var re = new RegExp(document.demoMatch.regex.value); 
     if (document.demoMatch.subject.value.match(re)) { 
     alert("Successful match"); 
     } else { 
     alert("No match"); 
     } 
    } 
    </SCRIPT> 
    <P>regEx for unicode characters :</P> 
    <FORM ID="demoMatch" NAME="demoMatch" METHOD=POST ACTION="javascript:void(0)"> 
    <P>Regexp: 
     <INPUT TYPE=TEXT NAME="regex" VALUE="^([^\x00-\x7F]|[\w_\ \-])+$" SIZE=50> 
    </P> 
    <P>Subject string: 
     <INPUT TYPE=TEXT NAME="subject" VALUE="This is a test of the JavaScript RegExp object" SIZE=50> 
    </P> 
    <P> 
     <INPUT TYPE=SUBMIT VALUE="Test Match" ONCLICK="demoMatchClick()"> 
    </P> 
    </FORM> 
</body> 

</html> 
+0

Sonra sadece değiştirmek '[ \ w_ \ \ -] '' [\ w \ \ -] '? Bu, regex deseninizdeki karakter kümesi için '_' kaldırır. – Terry

+0

çalışmıyor –

cevap

2

Don yazılı durur yanlış _ dönüşü yazmak ait algılar _ ASCII karakteridir Bazı jQuery kullanmayın. Wich anahtarının girişte olduğunu kontrol edin, eğer eksi VE shift ise, bunu engelleyin.

HTML

<input type="text" class="js-input"> 

JS

// get field 
var field = document.querySelector('.js-input'); 

// add keydown listener 
field.addEventListener('keydown', function(e) { 
    // 189 === minus 
    // with shift === _ 
    if (e.which === 189 && e.shiftKey === true) { 
    e.preventDefault(); 
    } 
}); 

Demo: https://jsfiddle.net/jrck9m2r/1/

Düzenleme: @Gaurav cevabı çalışmaz: https://jsfiddle.net/Ley8mc19/2/

+0

çözümünüz benim tarafımda çalışıyor. Mevcut kodumla nasıl entegre edebiliriz. https://plnkr.co/edit/Solap6eBGssvn7wVjkFn?p=preview –

+0

Böyle bir şey mi var? https://plnkr.co/edit/iGXNM63mNxqlphNBAWWc?p=preview – Pimmol

+0

jQuery'yi kullanmamanın savunulması için yukarı oyla. – John

1

kullanan bazı jquery

$('input').on('input propertychange', function(event){ 
    if(event.which==95){ 
    return false; 
    } 
}) 

95 bu jQuery bunu

+0

Yukarıdaki kodu bu kodla düzenleyebilirsin https://plnkr.co/edit/Solap6eBGssvn7wVjkFn?p=preview –

+1

jQuery ile bir JavaScript sorusunu yanıtlamak için aşağıya oy kullanıldı. Basit bir şey elde etmek için başka 70KB'yi dökmek için birisinin gerekmesi tamamen profesyonelce değildir. – John

İlgili konular