2016-11-06 177 views
3

我的练习是强制用户键入一个数字并检查它是否小于100.我认为我已经做得很好,但还有另一种情况我不知道该怎么做。如果用户没有在空间中输入任何数字,程序应该显示“你必须输入一个数字”。我应该如何编写代码?Javascript用户输入验证

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'); 
} 
+0

我认为使用提示你不能这样做。 – Mahi

+4

@Mahi当然你可以... – Brad

+0

@Brad你怎么能禁用提示返回空字符串值? – Mahi

回答

2

您可以通过使用isNaN函数来确定用户输入是否是有效数字。我也验证了你的空白字符,如下所示。

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

全部片段:

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"); 
 
}

https://jsfiddle.net/ezgn5cv5/

+0

当我点击确定后没有输入它不应该去,如果条件 – Mahi

+0

@Darren戴维斯我认为你应该删除空格,以避免额外的空间也空输入''“''将'0 ' –

+0

@MamdouhFreelancer - 那么你可以添加另一个检查'&&数字!==“”' - 请参阅我的更新。 –

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'); 
 
}

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) 
); 

这让我们在一个循环的数量是否是一个有效的整数(我假定这就是你想要,但你可以改变这个浮动或其他东西),并在100以下。只有当用户的输入是有效的,它会去的行输出。

条件为while循环为!number。这基本上测试了虚假条件,如NaNnull。如果parseInt()找不到用户输入的数字,它将返回NaN。当然,我们初始化number变量为null

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

第三条件只是确保我们在100通过重新提示,如果我们不是。

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