【问题标题】:Only accept number from 1 to 9 Using JavaScript只接受从 1 到 9 的数字 使用 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 时代的“警报”和其他模式对话框。

标签: javascript input numbers inputbox


【解决方案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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 2016-06-19
      • 1970-01-01
      • 2021-12-15
      • 2018-05-11
      • 2013-11-11
      相关资源
      最近更新 更多