JavaScript:限制字段-无法删除特殊符号

JavaScript:限制字段-无法删除特殊符号,javascript,input,special-characters,textfield,restrict,Javascript,Input,Special Characters,Textfield,Restrict,我试图通过在setInterval中检查输入文本并删除不是数字的字符来将输入文本限制为数字。现在到目前为止,这是相对正常的,但我不能删除“特殊符号”。例如,如果我输入西班牙语重音符号'或类似G的符号,它们应该位于字符上方,则会重置字段,并且不会再次赋值,尽管该符号已从字符串中删除(如果我记录该字符串,我可以看到它是) 例如: 键入123a=>a已删除,输入包含123 输入123ˇ=>input包含一个空字符串,尽管“text”字符串 包含123,长度为3 键入123并在其=>ˇ移除后粘贴,输入包

我试图通过在setInterval中检查输入文本并删除不是数字的字符来将输入文本限制为数字。现在到目前为止,这是相对正常的,但我不能删除“特殊符号”。例如,如果我输入西班牙语重音符号'或类似G的符号,它们应该位于字符上方,则会重置字段,并且不会再次赋值,尽管该符号已从字符串中删除(如果我记录该字符串,我可以看到它是)

例如:

  • 键入123a=>a已删除,输入包含123
  • 输入123ˇ=>input包含一个空字符串,尽管“text”字符串 包含123,长度为3
  • 键入123并在其=>ˇ移除后粘贴,输入包含123
  • 这似乎与这样一个事实有关,即特殊符号不是……自立(?)并且需要在下一个应该输入的字符上。如何解决这个问题? 多谢各位

    我有以下HTML:

    <body>
        <input type="text" id="input_field">
    </body>
    
    
    
    而JS:

    $("#input_field").focus(function(e) {
                console.log("got focus"+$(this).val());
                var obj = this;
                intID = setInterval(function() {restrictNumbers(obj)}, 10);
            });
    
            $("#input_field").blur(function(e) {
                console.log("got blur")
                clearInterval(intID);
            });
    
            function restrictNumbers(field) {
                var text = $(field).val();
                var caretPos;
                var modified = false;
                if(text.length > 0) {
                    for(var i=0; i<text.length; i++) {
                        if(isNaN(text.charAt(i))) {
                            modified = true;
                            caretPos = field.selectionStart - 1;
                            text = text.replace(text.charAt(i), "");
                            i--;
                        }
                    }
                    $(field).val(text);
                    if(modified) {
                        modified = false;
                        field.setSelectionRange(caretPos, caretPos);
                    }
                }
            }
    
    $(“#输入_字段”)。焦点(函数(e){
    log(“获得焦点”+$(this.val());
    var obj=这个;
    intID=setInterval(函数(){restrictNumbers(obj)},10);
    });
    $(“#输入#字段”).blur(函数(e){
    log(“变得模糊”)
    净间隔(intID);
    });
    功能限制编号(字段){
    var text=$(字段).val();
    var caretPos;
    var修改=错误;
    如果(text.length>0){
    对于(var i=0;i,您可以使用:-

    jQuery.fn.ForceNumericOnly =
    function()
    {
        return this.each(function()
        {
            $(this).keydown(function(e)
            {
                var key = e.charCode || e.keyCode || 0;
                // allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY
                // home, end, period, and numpad decimal
                return (
                    key == 8 || 
                    key == 9 ||
                    key == 46 ||
                    key == 110 ||
                    key == 190 ||
                    (key >= 35 && key <= 40) ||
                    (key >= 48 && key <= 57) ||
                    (key >= 96 && key <= 105));
            });
        });
    };
    

    来源:-

    谢谢,但它不允许任何键盘快捷键(这非常重要)。
    $("#yourTextBoxName").ForceNumericOnly();