Javascript Don';不允许在a中键入字母字符<;输入类型=数字/>;
我需要有一个文本框,无论何时在里面输入,都只允许数字[0-9]。我使用了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
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;
});