只接受从 1 到 9 的数字 使用 JavaScript
Posted
技术标签:
【中文标题】只接受从 1 到 9 的数字 使用 JavaScript【英文标题】:Only accept number from 1 to 9 Using JavaScript 【发布时间】:2011-08-26 12:33:06 【问题描述】:想知道如何只接受从 1 到 9 输入到输入框中的数字,如果输入例如 0 会发出警告消息,抱歉不是有效数字。
请检查我到目前为止所做的功能,但没有工作..谢谢
<input name="number1" type="text" size="1" id="number1"onkeyup="doKeyUpValidation(this)/>
doKeyUpValidation(text)
var validationRegex = RegExp(/[-0-9]+/, "g");
if(!validationRegex.match(text.value)
alert('Please enter only numbers.');
【问题讨论】:
认真的吗?你说0-9
并期望它拒绝0
?!更不用说 html 无效并且 JS (至少)缺少大括号。
他说[-0-9]
。也许她/他希望它基于领先的-
拒绝,就好像它是一个“不包含”的语法一样。它不是;正则表达式错误。
是的,对上述评论投了赞成票(来自-1)-还有问题本身,以删除-1。伙计们,我们不要太苛刻。
我希望人们会根据“这个问题有用吗?”来投票。而不是“这个问题值得这么多人认为(无)有用吗?” (请记住,您获得更多积分,而不是您因拒绝投票而失去的积分,因此这不是一种平衡行为)
...顺便说一句,请不要这样做。为如此小的数据输入问题发出一个非常侵入性的模态“警报”框是非常糟糕的风格。您应该简单地在输入框旁边添加一个文本(粗体或红色),但打开模式对话框是不好的。实际上,人们根本不应该再使用 1990 年代早期 javascript 时代的“警报”和其他模式对话框。
【参考方案1】:
您的onkeyup
属性末尾缺少一个结束引号,正如大卫所说,您需要将您的正则表达式字符串更改为/[1-9]/
【讨论】:
【参考方案2】:你已经很接近了。试试这个:
function doKeyUpValidation(text)
var validationRegex = RegExp(/[1-9]+/, "g"); // The regex was wrong
if( !validationRegex.match(text.value) )
alert('Please enter only numbers.');
// this was missing before
【讨论】:
您在 if 语句后缺少function
关键字和 )
。【参考方案3】:
你的 HTML 有点不对,应该是:
<input name="number1" type="text" size="1" id="number1" onkeyup="doKeyUpValidation(this)"/>
每个属性之间需要一个空格,每个属性都需要加引号。
此外,您的 JavaScript 有一些错误。应该是:
function doKeyUpValidation(text)
var validationRegex = /[1-9]/g;
if (!validationRegex.test(text.value))
alert('Please enter only numbers.');
您需要 function 关键字才能使 doKeyUpValidation
成为函数。此外,您的正则表达式有点偏离。
演示:http://jsfiddle.net/EqhSS/10/
【讨论】:
以上是关于只接受从 1 到 9 的数字 使用 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章
React Native TextInput 只接受数字字符