Javascript忽略数字字段上的novalidate?
至少在IE11和Firefox中,JavaScript似乎在设置数字字段的值时忽略了表单“novalidate”选项。我希望使用数字字段,因为我希望在移动设备上查看我的站点时,数字键盘会显示在键盘的位置,但当输入值时,我希望能够将其格式化为(#####)#-####。在下面的示例中,由于“novalidate”选项,我可以在字段中键入任何我想要的内容,但JS不允许我插入我想要的内容:Javascript忽略数字字段上的novalidate?,javascript,html,Javascript,Html,至少在IE11和Firefox中,JavaScript似乎在设置数字字段的值时忽略了表单“novalidate”选项。我希望使用数字字段,因为我希望在移动设备上查看我的站点时,数字键盘会显示在键盘的位置,但当输入值时,我希望能够将其格式化为(#####)#-####。在下面的示例中,由于“novalidate”选项,我可以在字段中键入任何我想要的内容,但JS不允许我插入我想要的内容: var txtNum=document.getElementById(“txtNum”); 函数ftnTest
var txtNum=document.getElementById(“txtNum”);
函数ftnTestA(){
var num=“1234567890”;
txtNum.value=num;
}
函数ftnTestB(){
var num=“(123)456-7890”;
txtNum.value=num;
}
函数ftnTestC(){
var num=“123-456-7890”;
txtNum.value=num;
}
1234567890(工程)
(123)456-7890(无IE,无FF)
123-456-7890(在IE中工作,无FF)
不要使用type=“number”
输入字段,而是使用type=“tel”
字段,因为这正是您要做的。数字输入字段仅为数字设计。不要使用type=“Number”
输入字段,而要使用type=“tel”
字段,因为这正是您要做的。数字输入字段仅用于数字。在最新版本的chrome中,它甚至不允许您在该字段中键入括号。我认为这里有一个更根本的问题novalidate
没有做您最初认为它在做的事情。novalidate
在这里不起作用。它仅在您使用时关闭验证。输入类型为“number”的字段将不接受非数字字符。您需要将您的输入类型更改为其他类型,尽管我不知道正确的类型;浏览器支持(或不支持)HTML5表单验证和新的HTML5输入类型。在您的情况下,浏览器不会忽略“novalidate”-无论表单/字段验证如何,都是输入类型
限制了可以输入的内容。只能在该字段中输入一组受限字符。。。尝试使用E
,这是允许的,因此您可以输入带有科学符号的数字,如3.02E+7
或9.707E-12
,无“novalidate”,我无法手动在字段中键入括号或任何其他非数字。使用novalidate,我可以手动在字段中键入任何我想要的内容,但仍然只能在移动浏览器上获得数字键盘。这是预期的行为。然而,尽管我可以手动键入我想要的任何内容,但使用JavaScript填充字段仍然会遵循这些限制。所以novalidate确实有效,并且可以在数字字段中输入非数字,至少在FF和IE中是这样;在最新版本的chrome中,它甚至不允许您在该字段中键入括号。我认为这里有一个更根本的问题novalidate
没有做您最初认为它在做的事情。novalidate
在这里不起作用。它仅在您使用时关闭验证。输入类型为“number”的字段将不接受非数字字符。您需要将您的输入类型更改为其他类型,尽管我不知道正确的类型;浏览器支持(或不支持)HTML5表单验证和新的HTML5输入类型。在您的情况下,浏览器不会忽略“novalidate”-无论表单/字段验证如何,都是输入类型
限制了可以输入的内容。只能在该字段中输入一组受限字符。。。尝试使用E
,这是允许的,因此您可以输入带有科学符号的数字,如3.02E+7
或9.707E-12
,无“novalidate”,我无法手动在字段中键入括号或任何其他非数字。使用novalidate,我可以手动在字段中键入任何我想要的内容,但仍然只能在移动浏览器上获得数字键盘。这是预期的行为。然而,尽管我可以手动键入我想要的任何内容,但使用JavaScript填充字段仍然会遵循这些限制。所以novalidate确实有效,并且可以在数字字段中输入非数字,至少在FF和IE中是这样;JavaScript没有考虑到这一点。谢谢!这正是我需要的。谢谢!这正是我需要的。