【问题标题】:how to use javascript to check if the first character in a textbox is a number?如何使用javascript检查文本框中的第一个字符是否为数字?
【发布时间】:2013-04-01 04:49:06
【问题描述】:

我正在制作一个简单的表格,并有一个街道地址的文本框...... 我要做的就是检查输入的第一个值是否是数字。

我该怎么做?

if(document.forms[0].elements[2].value.

这就是我现在所拥有的,但我不确定应该添加什么来仅检查第一个字符。

【问题讨论】:

  • 您可以使用字符串函数或正则表达式。
  • if (/^\d/.test(document.forms[0].elements[2].value))

标签: javascript forms textbox numbers


【解决方案1】:

正如您在问题中所说,您只想检查第一个字符,您可以对字符串使用charAt 函数来检查第一个字符是从 0 到 9 还是您想要的任何其他检查第一个字符

可能的解决方案

var firstChar = document.forms[0].elements[2].value.charAt(0);
if( firstChar <='9' && firstChar >='0') {
      //do your stuff
}

【讨论】:

  • 您的原始代码可以解决问题,而这个不会。 firstChar 不是数字,而是字符串,不能与 90 进行比较。这种比较总是错误的。与'9''0' 进行比较,或者获取带有charCodeAt(0) 的ASCII 值,以检查是否在4857 之间。
  • 那也行。在控制台中试试这个。 str="90";c=str.charAt(0);c&lt;=9 &amp;&amp; c&gt;=0 将返回 true。 Javascript 没有强类型,因此 == 可以正常工作,并且在与整数 9 比较时,'9' 将返回 true。您的答案在 Java 和 C 等其他语言中是正确的。请记住,在JavaScript。
  • 在 chrome 中,str="90";c=str.charAt(0);c&lt;=9 &amp;&amp; c&gt;=0 返回 true,str="a0";c=str.charAt(0);c&lt;=9 &amp;&amp; c&gt;=0 返回 false
  • String 原型有一个 valueOf 方法,它试图从字符串中提取一个数字。当一个字符串与一个数字比较时,这个方法被调用,然后 "55"
【解决方案2】:

这可以简单地使用isNaN。只需在它前面加上一个 bang 来检查它是否是一个数字,而不是 isNaN 的正常使用来检查它是否不是一个数字,如下所示:

var val = document.forms[0].elements[2].value;
if (!isNaN(val.charAt(0))){ //If is a number
  //Stuff
}

这也与数字作为字符串一起使用,因此需要担心引号或任何类似的东西。

【讨论】:

    【解决方案3】:

    您可以使用if (document.forms[0].elements[2].value.match(/^\d+/)) 来检查字段的开头是否由数字组成。

    它将匹配:

    0 - valid
    1 - valid
    1a - valid
    1 a - valid
    1234567 - valid
    a - invalid
    a1 - invalid
    

    字面上任何以数字开头的东西。

    您可以将其功能扩展到if (document.forms[0].elements[2].value.match(/^\d+ +.+/))

    在这种形式中,它现在需要一个数字,加上一个或多个空格,然后是其他任何内容。

    0 - invalid
    1 - invalid
    1(space) - invalid
    1 1 - valid
    1 a - valid
    12345 abcdef - valid
    

    阅读有关Regular Expressions 的更多信息以详细说明更复杂的检查。

    但首先请记住,并非每个地址都有数字,而且世界上大多数国家都不使用这种书写地址的格式。至于地址字段,我相信您应该将其保持打开状态,以用户希望的任何格式写入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-04
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2017-09-09
      • 2021-09-29
      相关资源
      最近更新 更多