只接受从 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 只接受数字字符

正则表达式 只能出现一次或0次

正则表达式只接受带小数点和小数点的数字输入

如何使用maskRe限制ExtJs Textfield仅接受数字。 (应接受正数,负数,整数和十进制数。)

带有条件的java中的正则表达式

html 如何输入只接受0到10之间的数字?