如何使用jquery阻止或限制输入字段中的特殊字符?

如何使用jquery阻止或限制输入字段中的特殊字符?,jquery,special-characters,alphanumeric,Jquery,Special Characters,Alphanumeric,如何阻止使用jquery在输入字段中键入特殊字符?这是一个阻止用户键入字符“a”的示例 此处引用关键代码: 看看jQuery字母数字插件 是的,您可以使用jQuery作为: <script> $(document).ready(function() { $("#username").blur(function() { //remove all the class add the messagebox classes and start fading

如何阻止使用jquery在输入字段中键入特殊字符?

这是一个阻止用户键入字符“a”的示例

此处引用关键代码:

看看jQuery字母数字插件


是的,您可以使用jQuery作为:

<script>
$(document).ready(function()
{
    $("#username").blur(function()
    {
        //remove all the class add the messagebox classes and start fading
        $("#msgbox").removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
        //check the username exists or not from ajax
        $.post("user_availability.php",{ user_name:$(this).val() } ,function(data)
        {
          if(data=='empty') // if username is empty
          {
            $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox
            { 
              //add message and change the class of the box and start fading
              $(this).html('Empty user id is not allowed').addClass('messageboxerror').fadeTo(900,1);
            });
          }
          else if(data=='invalid') // if special characters used in username
          {
            $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox
            { 
              //add message and change the class of the box and start fading
              $(this).html('Sorry, only letters (a-z), numbers (0-9), and periods (.) are allowed.').addClass('messageboxerror').fadeTo(900,1);
            });
          }
          else if(data=='no') // if username not avaiable
          {
            $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox
            { 
              //add message and change the class of the box and start fading
              $(this).html('User id already exists').addClass('messageboxerror').fadeTo(900,1);
            });     
          }
          else
          {
            $("#msgbox").fadeTo(200,0.1,function()  //start fading the messagebox
            { 
              //add message and change the class of the box and start fading
              $(this).html('User id available to register').addClass('messageboxok').fadeTo(900,1); 
            });
          }

        });

    });
});
</script>
<input type="text" id="username" name="username"/><span id="msgbox" style="display:none"></span>

$(文档).ready(函数()
{
$(“#用户名”).blur(函数()
{
//删除所有类添加messagebox类并开始淡入淡出
$(“#msgbox”).removeClass().addClass('messagebox').text('Checking…').fadeIn(“slow”);
//从ajax检查用户名是否存在
$.post(“user\u availability.php”,{user\u name:$(this).val()},函数(数据)
{
if(data=='empty')//如果用户名为空
{
$(“#msgbox”).fadeTo(200,0.1,function()//开始淡入messagebox
{ 
//添加消息并更改框的类别,然后开始淡入淡出
$(this).html('Empty user id is not allowed').addClass('messageboxerror').fadeTo(900,1);
});
}
else if(data=='invalid')//如果用户名中使用特殊字符
{
$(“#msgbox”).fadeTo(200,0.1,function()//开始淡入messagebox
{ 
//添加消息并更改框的类别,然后开始淡入淡出
$(this).html('对不起,只允许字母(a-z)、数字(0-9)和句点(.))).addClass('messageboxerror').fadeTo(900,1);
});
}
else if(data=='no')//如果用户名不可用
{
$(“#msgbox”).fadeTo(200,0.1,function()//开始淡入messagebox
{ 
//添加消息并更改框的类别,然后开始淡入淡出
$(this.html('User id ready exists')).addClass('messageboxerror').fadeTo(900,1);
});     
}
其他的
{
$(“#msgbox”).fadeTo(200,0.1,function()//开始淡入messagebox
{ 
//添加消息并更改框的类别,然后开始淡入淡出
$(this).html('User id available to register').addClass('messageboxok').fadeTo(900,1);
});
}
});
});
});
您的用户可用性的脚本。php将是:

<?php
include'includes/config.php';

//value got from the get method
$user_name = trim($_POST['user_name']);

if($user_name == ''){
    echo "empty";
}elseif(preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $user_name)){
    echo "invalid";
}else{
    $select = mysql_query("SELECT user_id FROM staff");

    $i=0;
    //this varible contains the array of existing users
    while($fetch = mysql_fetch_array($select)){
        $existing_users[$i] = $fetch['user_id'];
        $i++;
    }

    //checking weather user exists or not in $existing_users array
    if (in_array($user_name, $existing_users))
    {
        //user name is not availble
        echo "no";
    } 
    else
    {
        //user name is available
        echo "yes";
    }
}
?>

我尝试为/\添加,但没有成功


您也可以使用javascript来实现这一点&代码如下:

<!-- Check special characters in username start -->
<script language="javascript" type="text/javascript">
function check(e) {
    var keynum
    var keychar
    var numcheck
    // For Internet Explorer
    if (window.event) {
        keynum = e.keyCode;
    }
    // For Netscape/Firefox/Opera
    else if (e.which) {
        keynum = e.which;
    }
    keychar = String.fromCharCode(keynum);
    //List of special characters you want to restrict
    if (keychar == "'" || keychar == "`" || keychar =="!" || keychar =="@" || keychar =="#" || keychar =="$" || keychar =="%" || keychar =="^" || keychar =="&" || keychar =="*" || keychar =="(" || keychar ==")" || keychar =="-" || keychar =="_" || keychar =="+" || keychar =="=" || keychar =="/" || keychar =="~" || keychar =="<" || keychar ==">" || keychar =="," || keychar ==";" || keychar ==":" || keychar =="|" || keychar =="?" || keychar =="{" || keychar =="}" || keychar =="[" || keychar =="]" || keychar =="¬" || keychar =="£" || keychar =='"' || keychar =="\\") {
        return false;
    } else {
        return true;
    }
}
</script>
<!-- Check special characters in username end -->

<!-- in your form -->
    User id : <input type="text" id="txtname" name="txtname" onkeypress="return check(event)"/>

功能检查(e){
变量keynum
var-keychar
var numcheck
//用于Internet Explorer
if(window.event){
keynum=e.keyCode;
}
//适用于Netscape/Firefox/Opera
否则,如果(例如,哪个){
keynum=e.which;
}
keychar=String.fromCharCode(keynum);
//要限制的特殊字符列表
如果(keychar)的关键字符==“““”””如果(Key字符字符)的如果(Key字符字符==““““如果如果如果(Key字符字符)的如果如果(Key字符字符===”””””””””““““此次此次方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方=“+”|| keychar==“=”| keychar==“/”| keychar==“~”| | keychar==“| | keychar==”,”|keychar==”;“| keychar==”:“| keychar==”?“| keychar==”{“| keychar=”}”| keychar==”[“| keychar==”]“| keychar==”,“| keychar keychar==”,“| keychar{
返回false;
}否则{
返回true;
}
}
用户id:

一个使用正则表达式的简单示例,您可以将其更改为允许/不允许任何您喜欢的内容

$('input').on('keypress', function (event) {
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (!regex.test(key)) {
       event.preventDefault();
       return false;
    }
});
只是数字:

$('input.time').keydown(函数(e){if(e.keyCode>=48&& e、 keyCode=48&& e、 keyCode=46&&
e、 keyCode想评论Alex对Dale回答的评论。不可能(首先需要多少“代表”?这不会很快发生..奇怪的系统。) 因此,作为回答:

可以通过向正则表达式定义添加\b来添加退格,如下所示:[a-zA-Z0-9\b]。 或者只允许整个拉丁语范围,包括或多或少的任何“非外来”字符(也可以控制诸如backspace之类的字符):^[\u0000-\u024F\u20AC]+$

除拉丁语外,只有真正的unicode字符是欧元符号(20ac),请添加您可能需要的其他字符

要处理通过复制和粘贴输入的输入,只需绑定到“change”事件,并在那里检查输入-删除它或将其条带化/给出类似“not supported characters”的错误消息


我正在寻找一个答案,该答案将输入限制为仅字母数字字符,但仍然允许使用控制字符(例如,退格、删除、制表符)和复制+粘贴。我尝试提供的答案中没有一个满足所有这些要求,因此我使用
输入
事件得出以下结论

$('input').on('input', function() {
  $(this).val($(this).val().replace(/[^a-z0-9]/gi, ''));
});
编辑:
正如注释中所指出的,上面的代码片段在输入文本中间时将光标强制输入到输入的末端。我相信下面的代码片段解决了这个问题。

$('input').on('input', function() {
  var c = this.selectionStart,
      r = /[^a-z0-9]/gi,
      v = $(this).val();
  if(r.test(v)) {
    $(this).val(v.replace(r, ''));
    c--;
  }
  this.setSelectionRange(c, c);
});

简短回答:防止“按键”事件:

$("input").keypress(function(e){
    var charCode = !e.charCode ? e.which : e.charCode;

    if(/* Test for special character */ )
        e.preventDefault();
})
详细回答:使用类似

当选择一个解决方案时,有几个事情需要考虑:

var angularApp = angular.module('Application', []);

...

// new angular directive
angularApp.directive('onlyNum', function() {
    return function( scope, element, attrs) {

        var specialChars = [62,33,36,64,35,37,94,38,42,40,41];

        // prevent these special characters
        element.bind("keypress", function(event) {
            if($.inArray(event.which,specialChars) != -1) {
                prevent( scope, event, attrs)
             }
        });

        var allowableKeys = [8,9,37,39,46,48,49,50,51,52,53,54,55,56
            ,57,96,97,98,99,100,101,102,103,104,105,110,190];

        element.bind("keydown", function(event) {
            if($.inArray(event.which,allowableKeys) == -1) {
                prevent( scope, event, attrs)
            }
        });
    };
})

// scope.$apply makes angular aware of your changes
function prevent( scope, event, attrs) {
    scope.$apply(function(){
        scope.$eval(attrs.onlyNum);
        event.preventDefault();
    });
    event.preventDefault();
}
  • 粘贴文本
  • 上述代码可能会阻止backspace或F5等控制字符
  • é、í、ä等
  • 阿拉伯文或中文
  • 跨浏览器兼容性
我认为这个领域非常复杂,需要使用第三方插件。我尝试了几个可用的插件,但发现每个插件都存在一些问题,所以我继续编写。代码如下所示:

$("input").alphanum();
或者,要获得更细粒度的控制,请添加一些设置:

$("#username").alphanum({
    allow      : "€$£",
    disallow   : "xyz",
    allowUpper : false
});

希望有帮助。

在textbox的onkeypress事件上编写一些javascript代码。 根据要求,允许和限制文本框中的字符

function isNumberKeyWithStar(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 42)
        return false;
    return true;
}
function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
    return true;
}
function isNumberKeyForAmount(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46)
        return false;
    return true;
}

函数为NumberKeyWithStar(evt){
瓦查尔科
$("#username").alphanum({
    allow      : "€$£",
    disallow   : "xyz",
    allowUpper : false
});
function isNumberKeyWithStar(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 42)
        return false;
    return true;
}
function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
    return true;
}
function isNumberKeyForAmount(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46)
        return false;
    return true;
}
<input type="text" pattern="^[a-zA-Z0-9]+$" />
$('#input').bind('keydown', function (event) {
        switch (event.keyCode) {
            case 8:  // Backspace
            case 9:  // Tab
            case 13: // Enter
            case 37: // Left
            case 38: // Up
            case 39: // Right
            case 40: // Down
            break;
            default:
            var regex = new RegExp("^[a-zA-Z0-9.,/ $@()]+$");
            var key = event.key;
            if (!regex.test(key)) {
                event.preventDefault();
                return false;
            }
            break;
        }
});
var specialChars = [62,33,36,64,35,37,94,38,42,40,41];

some_element.bind("keypress", function(event) {
// prevent if in array
   if($.inArray(event.which,specialChars) != -1) {
       event.preventDefault();
   }
});
var angularApp = angular.module('Application', []);

...

// new angular directive
angularApp.directive('onlyNum', function() {
    return function( scope, element, attrs) {

        var specialChars = [62,33,36,64,35,37,94,38,42,40,41];

        // prevent these special characters
        element.bind("keypress", function(event) {
            if($.inArray(event.which,specialChars) != -1) {
                prevent( scope, event, attrs)
             }
        });

        var allowableKeys = [8,9,37,39,46,48,49,50,51,52,53,54,55,56
            ,57,96,97,98,99,100,101,102,103,104,105,110,190];

        element.bind("keydown", function(event) {
            if($.inArray(event.which,allowableKeys) == -1) {
                prevent( scope, event, attrs)
            }
        });
    };
})

// scope.$apply makes angular aware of your changes
function prevent( scope, event, attrs) {
    scope.$apply(function(){
        scope.$eval(attrs.onlyNum);
        event.preventDefault();
    });
    event.preventDefault();
}
<input only-num type="text" maxlength="10" id="amount" placeholder="$XXXX.XX"
   autocomplete="off" ng-model="vm.amount" ng-change="vm.updateRequest()">
...

this.updateRequest = function() {
    amount = $scope.amount;
    if (amount != undefined) {
        document.getElementById('spcf').onkeypress = function (e) {
        // only allow one period in currency
        if (e.keyCode === 46 && this.value.split('.').length === 2) {
            return false;
        }
    }
    // Remove "." When Last Character and round the number on blur
    $("#amount").on("blur", function() {
      if (this.value.charAt(this.value.length-1) == ".") {
          this.value.replace(".","");
          $("#amount").val(this.value);
      }
      var num = parseFloat(this.value);
      // check for 'NaN' if its safe continue
      if (!isNaN(num)) {
        var num = (Math.round(parseFloat(this.value) * 100) / 100).toFixed(2);
        $("#amount").val(num);
      }
    });
    this.data.amountRequested = Math.round(parseFloat(amount) * 100) / 100;
}

...
$(document).ready(function (){
  $(document).on("keyup", "#Id", function () {
  $("#Id").val($("#Id").val().replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '').toLowerCase());
 }); 
});
[User below code to restrict special character also    

$(h.txtAmount).keydown(function (event) {
        if (event.shiftKey) {
            event.preventDefault();
        }
        if (event.keyCode == 46 || event.keyCode == 8) {
        }
        else {
            if (event.keyCode < 95) {
                if (event.keyCode < 48 || event.keyCode > 57) {
                    event.preventDefault();
                }
            }
            else {
                if (event.keyCode < 96 || event.keyCode > 105) {
                    event.preventDefault();
                }
            }
        }


    });]
$("input").on("keypress paste", function(e){
    var c = this.selectionStart, v = $(this).val();
    if (e.type == "keypress")
        var key = String.fromCharCode(!e.charCode ? e.which : e.charCode)
    else
        var key = e.originalEvent.clipboardData.getData('Text')
    var val = v.substr(0, c) + key + v.substr(c, v.length)
    if (!val.match(/\d{0,8}/) || val.match(/\d{0,8}/).toString() != val) {
        e.preventDefault()
        return false
    }
})
$(function(){
      $('input').keyup(function(){
        var input_val = $(this).val();
        var inputRGEX = /^[a-zA-Z0-9]*$/;
        var inputResult = inputRGEX.test(input_val);
          if(!(inputResult))
          {     
            this.value = this.value.replace(/[^a-z0-9\s]/gi, '');
          }
       });
    });
        /*code: 48-57 Numbers
          8  - Backspace,
          35 - home key, 36 - End key
          37-40: Arrow keys, 46 - Delete key*/
        function restrictAlphabets(e){
            var x=e.which||e.keycode;
            if((x>=48 && x<=57) || x==8 ||
                (x>=35 && x<=40)|| x==46)
                return true;
            else
                return false;
        }
/**
     * Forbids special characters and decimals
     * Allows numbers only
     * */
    const numbersOnly = (evt) => {

        let charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode === 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
            return false;
        }

        let inputResult = /^[0-9]*$/.test(evt.target.value);
        if (!inputResult) {
            evt.target.value = evt.target.value.replace(/[^a-z0-9\s]/gi, '');
        }

        return true;
    }
<input type="text" (keypress)="omitSpecialChar($event)"/>
omitSpecialChar(event) {
    const keyPressed = String.fromCharCode(event.keyCode);
    const verifyKeyPressed = /^[a-zA-Z\' \u00C0-\u00FF]*$/.test(keyPressed);
    return verifyKeyPressed === true;
}