Javascript Don';不允许在a中键入字母字符<;输入类型=数字/>;

Javascript Don';不允许在a中键入字母字符<;输入类型=数字/>;,javascript,html,numbers,Javascript,Html,Numbers,我需要有一个文本框,无论何时在里面输入,都只允许数字[0-9]。我使用了type=“number”,它肯定会保存客户端验证,但也允许键入其他字母。我可以通过跟踪每个keydown并与regex匹配来实现这一点,但我想知道是否有任何方法可以限制只使用html标记而不使用JavaScript定义任何函数来在每个keydown中进行比较 不足以这样做的代码是: <input type="number" id="txt_number" maxlength="70" name="txt_na

我需要有一个文本框,无论何时在里面输入,都只允许数字[0-9]。我使用了
type=“number”
,它肯定会保存客户端验证,但也允许键入其他字母。我可以通过跟踪每个keydown并与regex匹配来实现这一点,但我想知道是否有任何方法可以限制只使用html标记而不使用JavaScript定义任何函数来在每个keydown中进行比较

不足以这样做的代码是:

    <input type="number" id="txt_number" maxlength="70" name="txt_name" placeholder="Number">

非常感谢您的帮助。

您可以使用插件

看 类似的问题

$(document).ready(function(){
   $(".numeric").numeric();
});

浏览器的行为不同。在Chrome中,输入以下代码:

<input type="number" id="txt_number" maxlength="70" name="txt_name" placeholder="Number">
  <input type="submit">


只有在表单中并且只有在用户单击“提交”按钮后,才会对您起作用

如果您不介意使用一点Javascript,这可能会有所帮助:


试试这个

定义javascript函数

允许使用十进制数的函数,如下所示

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

    return true;
}
函数isNumberKey(evt){
var charCode=(evt.which)?evt.which:event.keyCode;
如果(charCode!=46&&charCode>31
&&(字符编码<48 | |字符编码>57))
返回false;
返回true;
}
只允许数字而不允许小数的函数如下

function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode;
    if ((charCode < 48 || charCode > 57))
        return false;

    return true;
}
函数isNumberKey(evt){
var charCode=(evt.which)?evt.which:event.keyCode;
如果((字符码<48 | |字符码>57))
返回false;
返回true;
}
Html


您必须将输入框放在表单中,并带有提交按钮。表单验证在提交表单时进行。请参见此处的演示:

编号:

用于在移动设备上获取数字键盘的输入type=“number”

Java脚本

function numbersonly(myfield, e)
        {
            var key;
            var keychar;

            if (window.event)
                key = window.event.keyCode;
            else if (e)
                key = e.which;
            else
                return true;

            keychar = String.fromCharCode(key);

            // control keys
            if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
                return true;

            // numbers
            else if ((("0123456789").indexOf(keychar) > -1))
                return true;

            // only one decimal point
            else if ((keychar == "."))
            {
                if (myfield.value.indexOf(keychar) > -1)
                    return false;
            }
            else
                return false;
        }
Html


试试这个:-

 $("#txtAge").keydown(function (e) {
       if(e.key=='e' || e.key=='.' || e.key=='-')
        return false;
    });

我注意到这个问题是在2013年左右发布的。不管怎么说,现在type=“number”限制字母表和特殊字符,除了“e”、“e”和“+”之外,对于像1.2e+12这样的指数数字,“e”和“.”被认为是十进制数字。

只需添加-min=“0”max=“9”onkeydown=“return false;”


@saideshkilaru它的HTML5u可以使用type=“text”我在这里看到了类似的问题:。建议使用模式属性:
。用户js coder说:“
\d
是一个数字的正则表达式,
*
意味着它接受多个数字”@krishna,这没有帮助:)。LapiDuce,我已经试过了,但它只是用正则表达式验证,但不会阻止用户在文本框中键入内容。我建议允许用户输入字母字符并显示验证错误。我还不明白为什么大多数设计师/开发者认为屏蔽键盘是个好主意。1.为什么要让用户猜测键盘为什么不工作?知道它是一个数字的用户不需要它。一个不知道它应该是数字的用户认为键盘不工作。2.如果用户输入123AZ456,他将得到123456。他不会总是注意到发生了什么事情(因为大多数用户在打字时都不看屏幕)。结果123456无论如何都没有意义。
$('input[type=number]')。numeric()
将以所有这些为目标,而不需要额外的类。我想我将此标记为答案,因为这解决了问题。然而,对于我的特殊情况,我只需要在我的项目中使用它一次,如果只使用HTML5和jquery.js就可以完成的话,我不想包括jquery.numeric.js。如果有什么事的话:)。这有用吗?不,已经试过了。它仍然允许我们输入字母表。无论如何,谢谢你的帮助。:)事实上,我更喜欢“.numeric”类,因为如果我输入“type='number'”,他们会在右边得到一组恼人的上下按钮。是的,但这不是我想要的,它不会限制用户键入其他字母。另一种解决方案是@mihai.coirobea通过使用element.numeric()给出答案,包括jquery.numeric.js.Thank@Sandip,但我一直在寻找一些不使用任何javascript函数的东西。:)@Sandip,您的代码允许输入十进制,而不是数字。这似乎阻止了delete键在IE上不起作用,并且需要考虑windows numpad,因为它有不同的键码。您的小提琴允许字符“e”到目前为止最新的firefox不支持这一点
<form>Number:
    <input type="number" name="Number" value="10">
    <br>
    <input type="submit" value="Submit" />
</form>
function numbersonly(myfield, e)
        {
            var key;
            var keychar;

            if (window.event)
                key = window.event.keyCode;
            else if (e)
                key = e.which;
            else
                return true;

            keychar = String.fromCharCode(key);

            // control keys
            if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
                return true;

            // numbers
            else if ((("0123456789").indexOf(keychar) > -1))
                return true;

            // only one decimal point
            else if ((keychar == "."))
            {
                if (myfield.value.indexOf(keychar) > -1)
                    return false;
            }
            else
                return false;
        }
<input type="number" onkeypress="return numbersonly(this, event)"/>
 $("#txtAge").keydown(function (e) {
       if(e.key=='e' || e.key=='.' || e.key=='-')
        return false;
    });