【问题标题】:In JavaScript, how do I detect whether or not the input contains letters?在 JavaScript 中,如何检测输入是否包含字母?
【发布时间】:2011-12-15 21:33:19
【问题描述】:

我的代码如下,它输出用户在文本框中输入的内容。如果用户输入的不是数字,它应该输出错误消息。不过,我对如何做到这一点感到困惑。坦率地说,我认为它能够检测输入的第一个字母是否是 B,但我也不能完全弄清楚,前一个选项是首选。

HTML

<label for="bannerID">Banner ID: B</label><input type="text" name="bannerID" id="bannerID" onkeyup="showBannerID()" value="" /><br /> 

<p id="bannerOutput"></p>

JavaScript

function showBannerID() {

var textInput = document.getElementById('bannerID').value;

if (textInput.length == 0) {
    document.getElementById('bannerOutput').innerHTML = "<strong class=\"error\">Field can't be empty!</strong>";
}
else if (textInput.charAt(0) == "B") {
    document.getElementById('bannerOutput').innerHTML = "<strong class=\"error\">Please omit the B! It's not necessary.</strong>
}
else {
    document.getElementById('bannerOutput').innerHTML = "Your Banner ID is: <strong>B" + textInput + "</strong>.";
}
}

【问题讨论】:

  • 您的代码包含语法错误。你知道吗? (else-if-B 块中的引用未关闭)。

标签: javascript character letter


【解决方案1】:

您可以使用正则表达式来搜索数字以外的任何内容:

if (/[^\d]/.test(textInput)) {
    /* error stuff */
}

【讨论】:

  • 我得查一下,我们还没有学过正则表达式。进一步的问题:有没有办法检测他们输入的第一个数字是否是 B,如果是则输出错误消息?
  • @Doug 您的charAt 测试应该适用于此。没有得到您期望的结果?
【解决方案2】:

您可以使用 isNaN()(非数字)作为条件。

isNaN(123) 会给出 false,isNaN("hello") 会给出 true。

【讨论】:

  • 完美!现在有没有一种方法可以实现它,以及实现 else if for if 他们将 B 作为第一个字母?
猜你喜欢
  • 1970-01-01
  • 2020-12-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
相关资源
最近更新 更多