2012-10-11 36 views
1

我想只允许在我的网页中输入英文,数字和特殊字符。我想用jQuery或JavaScript应用这个东西。其实我的应用程序是在2种语言,所以我想这样做。我也想用阿拉伯语做同样的事情..请帮助我。 我该怎么做?如何只允许在文本框中使用jQuery或JavaScript的英文,数字和特殊字符?

+3

1 - 你尝试过什么? 2-什么是“英文”字符?其中之一是'$'吗?我知道“英语”使用它。 – RASG

+0

英文甚至使用é – Quentin

+0

'$('input')。change(function(){$(this).val('English characters');}' – mayhewr

回答

1

如果CH是字符,你可以做到这一点

if((ch.charCodeAt(0)>="a".charCodeAt(0) && ch.charCodeAt(0)<="z".charCodeAt(0))||(ch.charCodeAt(0)>="A".charCodeAt(0) && ch.charCodeAt(0)<="Z".charCodeAt(0))) 

你可以用它在Unicode中代表阿拉伯字符

做同样的比较

[\u0600-\u06ff]|[\u0750-\u077f]|[\ufb50-\ufc3f]|[\ufe70-\ufefc] 
+0

我们是否也可以检查阿拉伯语言 – Ram

+0

可以请您提供文本框示例... – Ram

+0

@Visions visit [this](http://www.w3schools.com/jsref/event_onkeypress.asp ) – Anirudha

2

你可以试试以下代码使用JavaScript replace method。该替代方法接受一个正则表达式,所以你可以定义你想/不想键入的文本框很多漂亮的事:

<script type="text/javascript"> 

     $('#textboxID').bind('keyup blur',function() { 
      $(this).val($(this).val().replace(/[^A-Za-z0-9]/g,'')) 
     }); 

</script> 

这里的的jsfiddle尝试了这一点:http://jsfiddle.net/leniel/rtE54/


经过多一点思考我实现了这个代码:

$("#mytextbox").on("keypress", function(event) { 

    // Disallow anything not matching the regex pattern (A to Z uppercase, a to z lowercase, digits 0 to 9 and white space) 
    // For more on JavaScript Regular Expressions, look here: https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions 
    var englishAlphabetDigitsAndWhiteSpace = /[A-Za-z0-9 ]/g; 

    // Retrieving the key from the char code passed in event.which 
    // For more info on even.which, look here: http://stackoverflow.com/q/3050984/114029 
    var key = String.fromCharCode(event.which); 

    //alert(event.keyCode); 

    // For the keyCodes, look here: http://stackoverflow.com/a/3781360/114029 
    // keyCode == 8 is backspace 
    // keyCode == 37 is left arrow 
    // keyCode == 39 is right arrow 
    // englishAlphabetDigitsAndWhiteSpace.test(key) does the matching, that is, test the key just typed against the regex pattern 
    if (event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39 || englishAlphabetDigitsAndWhiteSpace.test(key)) { 
     return true; 
    } 

    // If we got this far, just return false because a disallowed key was typed. 
    return false; 
}); 

$('#mytextbox').on("paste",function(e) 
{ 
    e.preventDefault(); 
}); 

你可以阅读更多关于它在这里:JavaScript regex + jQuery to allow only English chars/letters in input textbox

+1

这个问题是,如果你试图写它中间是将光标移动到最后。 – Aristos

+0

请参阅已解决此问题的解决方案的更新答案。 –

0

尝试类似的东西。对于英文字符的正则表达式为/^[A-ZA-Z0-9] * $/

<input name="yourtextbox" class="englishonly"> 
<script type="text/javascript"> 
$('.englishonly').bind('keyup blur',function(){ 
    $(this).val($(this).val().replace(/^[A-Za-z0-9]*$/g,'')); } 
); 
</script> 
+0

'0-9'是阿拉伯数字。他们应该被允许进入吗? :) – RASG

1

您可以限制对onkeypress按键基地检查,如果关键是在你设定的限制。

function ValidateKey() 
{ 
    var key=window.event.keyCode; 
    var allowed='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ :;,.?!£$%^&*()_+-*{}@~<>&"\''; 

    return allowed.indexOf(String.fromCharCode(key)) !=-1 ; 
} 

,你可以用它作为

<input size="30" value="" onkeypress="return ValidateKey();" >​ 

和小提琴:http://jsfiddle.net/UHGRz/3/

可以应用于与jQuery的所有输入控件。没有与复制/粘贴工作,那里你需要更换Lenier解决方案。

并皈依了jQuery代码

jQuery("input").keypress(function() 
{ 
    var key=window.event.keyCode; 
    var allowed='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ :;,.?!£$%^&*()_+-*{}@~<>&"\''; 

    return allowed.indexOf(String.fromCharCode(key)) !=-1 ; 
})​ 

和小提琴:http://jsfiddle.net/UHGRz/5/

+0

多数民众赞成我们也可以去阿拉伯语朗??????? – Ram

+0

当我输入“مرحبا”它不显示蚂蚁错误? – Ram

+0

@Visions我没有阿拉伯语键盘查看,你看它的工作。 – Aristos

相关问题