Javascript用户输入验证

时间:2016-11-06 17:55:11

标签: javascript

我的练习是强迫用户输入一个数字并检查它是否小于100.我想我做得很好但是还有另一种情况我不知道该怎么做。如果用户未在空格中键入任何数字,则程序应显示“您必须键入数字”之类的内容。我该如何编写代码?

var number=prompt('enter a number');
if (number<100){
    newnumber=100-number;
    document.write(number+'is less than 100 by'+ newnumber);
}else if(number>100){
    document.write('type again');
}

3 个答案:

答案 0 :(得分:2)

您可以使用isNaN功能确定用户输入是否为有效号码。我还为你验证了空白字符,如下所示。

var isValid = !isNaN(number) && number !== "";

完整代码段

&#13;
&#13;
var number = prompt('enter a number');
number = number.replace(/\s/g, ""); 
var isValid = !isNaN(number) && number !== "";

if (isValid) {
  if (number<100) {
     newnumber=100-number;
     document.write(number+'is less than 100 by'+ newnumber);
  } else if(number>100) {
      document.write('type again');
  }
} else {
   document.write("Looks like you didn't enter a valid number");
}
&#13;
&#13;
&#13;

https://jsfiddle.net/ezgn5cv5/

答案 1 :(得分:1)

  • 删除所有空格.replace(/\s/g, "")
  • 如果您要允许,请检测用户是否使用parseFloat()输入了号码 用户输入十进制数字,如5.254或仅使用整数 parseInt(),如5
  • 然后检测number > 100number < 100

见这个例子:

var number = prompt('enter a number');
    number = number.replace(/\s/g, ""); //remove all spaces

if (number != "") { // if not empty
  if (parseFloat(number) == number) { // if decimal/integer number
    if (number < 100) {
      newnumber = 100 - number;
      document.write(number + ' is less than 100 by ' + newnumber);
    } else if (number > 100) {
      //number = prompt('enter a number');
      document.write('type again');
    }
  } else {
      //number = prompt('enter a number');
    document.write('you must type a number');
  }
} else {  // if empty input
      //number = prompt('enter a number');
  document.write('shouldn\'t be empty');
}

答案 2 :(得分:1)

var number = null;
while (number !== 0 && !number || number >= 100) {
  number = parseInt(prompt('Enter a number, less than 100'));
}

document.write(
  number + 
  ' is less than 100 by ' + 
  (100 - number)
);

这使我们处于一个循环中,该数字是否是有效的整数(我假设你想要的是什么,但你可以将其更改为float或其他东西),只有当用户的输入有效时,它才会进入输出线。

while循环的第二条件为!number。这基本上测试了虚假条件,例如NaNnull。如果parseInt()无法确定用户为某个数字输入的内容,则会返回NaN。当然,我们已将number变量初始化为null

while第一条件number !== 0实际上是必需的,因为测试falsy的第二个条件。 0是假的,但0是一个小于100的有效数字,因此我们需要确保让0有效。像这些短路的条件。这意味着它们从左到右处理,任何未通过测试的条件将立即绕过下面的条件代码块。如果number0,我们知道整个条件都是错误的,我们可以继续前进。

第三条件只是确保我们重新提示我们是否在100下,如果我们不这样做。

另外,我应该注意document.write()有一些问题。最好在页面上选择一个元素并设置其文本。