Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery指定文本框中允许哪些字符?_Javascript_Jquery_Textfield - Fatal编程技术网

Javascript 如何使用jQuery指定文本框中允许哪些字符?

Javascript 如何使用jQuery指定文本框中允许哪些字符?,javascript,jquery,textfield,Javascript,Jquery,Textfield,我试图将输入限制为字母数字,0-9,A-Z,A-Z 我正在引用的ASCII表: 这是我到目前为止所拥有的 $(function() { $("input").bind("keydown paste", function(e) { var code = (e.keyCode ? e.keyCode : e.which); var c = code; var letterAllowed = ((c > 47 && c &l

我试图将输入限制为字母数字,0-9,A-Z,A-Z

我正在引用的ASCII表: 这是我到目前为止所拥有的

$(function() {
    $("input").bind("keydown paste", function(e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        var c = code;
        var letterAllowed = ((c > 47 && c < 58) || (c > 64 && c < 90) || (c > 96 && c < 123))
        if (code > 32 && !letterAllowed) {
            return false;
        }
    });
});​
$(函数(){
$(“输入”).bind(“按键粘贴”,函数(e){
var代码=(e.keyCode?e.keyCode:e.which);
var c=代码;
var letterAllowed=((c>47&&c<58)| |(c>64&&c<90)|(c>96&&c<123))
如果(代码>32&&!允许){
返回false;
}
});
});​
现在,波浪号(~)字符无法输入到字段中,但其他特殊/移位字符,如!@#$%所有这些都将输入文本字段。
我很确定我的逻辑是正确的,但我的问题是对javascript绑定的一些误解?idk

结果是,我需要执行以下操作:

$("input").keypress(function(e){
        var code = e.charCode;
charCode将给出键入字母的实际字符代码,而不是上次按下键的ascii代码


请参见

在javascript中,仅在某些情况下防止字符输入是非常复杂的,因为在(您希望防止的)中,您不知道输入的值,但只知道按下键的值(甚至不知道生成的字符)。此外,您还需要注意特殊的键,如或

我推荐如下:

$("input").on("keypress keyup paste", function(e) {
    this.value = this.value.replace(/[^a-zA-Z0-9]/g, '');
});

如果限制输入的字符,可以替换非字母数字的字符

<input type='text' id="txtAlphaNumeric"/>
<input type='text' id="txtNumeric"/>
<input type='text' id="txtAlphabet"/>
<script type="text/javascript">
$(function() {
    $('#txtNumeric').keyup(function() {
        if (this.value.match(/[^0-9]/g)) {
            this.value = this.value.replace(/[^0-9]/g, '');
        }
    });
    $('#txtAlphabet').keyup(function() {
        if (this.value.match(/[^a-zA-Z]/g)) {
            this.value = this.value.replace(/[^a-zA-Z]/g, '');
        }
    });
    $('#txtAlphaNumeric').keyup(function() {
        if (this.value.match(/[^a-zA-Z0-9]/g)) {
            this.value = this.value.replace(/[^a-zA-Z0-9]/g, '');
        }
    });
});
</script>

$(函数(){
$('#txtNumeric').keyup(函数(){
if(此.value.match(/[^0-9]/g)){
this.value=this.value.replace(/[^0-9]/g');
}
});
$('#txtAlphabet').keyup(函数(){
if(此.value.match(/[^a-zA-Z]/g)){
this.value=this.value.replace(/[^a-zA-Z]/g',);
}
});
$('#txt字母数字').keyup(函数(){
如果(此.value.match(/[^a-zA-Z0-9]/g)){
this.value=this.value.替换(/[^a-zA-Z0-9]/g');
}
});
});

答案取自:

Uhm,您的意思是您对粘贴事件有问题?如果是这样,您是否想过这样一个事实:
keydown
用于单个字符,
paste
可以用于多个字符?keyCode指的是按下的键,而不是它将输入的字符。shift字符是shift键代码和按下的键的组合。要查看此操作,请转到参考:您可以在上述代码中为字母表添加代码编号。或者试试这个。。为什么绝对不需要if语句?另外,仅在
keyup
上挂接会导致闪烁,无法检测粘贴等。