我有两种类型为输入字段的表单似乎没有Safari应用的任何验证(在Mac OS X Mavericks上)。也就是说,如果有一种类型的字母和点击提交,则在每个浏览器中都会显示一条消息,您需要在字段中输入数字 - 除了Safari。哦,Firefox也在这个平台上。
所以,我决定需要在处理这些表单值的JavaScript代码中添加验证。我输入正则表达式来拒绝任何不是一位数字的内容:
if ( !/^([0-9])$/.test(value) ) {
alert ("Please enter a number");
return;
}
在Firefox中,这表现得像我希望的那样。如果输入任何字母或除一个数字以外的任何字母,则会显示警告。
在Safari上,如果输入两个或更多数字,则也会显示警报,但如果输入非数字字符,则不会。它表现得好像很乐意接受输入,但如果我再在上面的else块中添加一个警告框来向我显示什么值,那么也不会显示。 JavaScript控制台中没有错误。这就像它什么都不做。
我盯着一堆正则表达式,虽然它尽可能简单。我很沮丧。任何想法,任何人?
答案 0 :(得分:0)
我真的不喜欢正则表达式。它们总是容易出错,有时你不会考虑所有可能的匹配。你为什么不用这样的东西:
if (parseInt("15", 10) !== NaN)
alert("is numeric");
else
alert("please enter a number");
答案 1 :(得分:0)
您的正则表达式测试 true 表示 单个数字 和 false 的字符串(并输入您的否定值)如果条件)否则。它必须只是一位数或一位或多位数?
添加+以指定一个或多个数值。
/^([0-9]+)$/
您是否还需要或正在使用分组(数字周围的括号)?
/^[0-9]+$/
答案 2 :(得分:0)
其他验证整数的方法..
// Integers including 0: following values will return true (0, 1, 2 .., 65, etc.)
/^(?:0|[1-9]\d*)$/.test(value);
// Integers, zero not allowed
/^[1-9]\d*$/.test(value);
// Test whether the value is an integer or not (+ sign try to cast the value into a number)
if(Number.isInteger(+value)){/* ... */}
用户友好的解决方案..
几个月前,我不得不格式化一个必须是整数或浮点数的用户输入;按键触发格式化过程。
这就是我取得的Fiddle here
允许的格式
希望它会有所帮助..