JavaScript 整数输入提示验证

标签 javascript validation prompt

我发现自己需要创建一个函数来验证 JS 提示符的输入是否为整数。事实证明,按 cancel 返回 null 时,存在一些微妙之处。

我最初尝试的(从Python程序移植)是:

function getInteger() {
    let number = null
    while ( number == null ) {
        let value = prompt( "Guess number: " )
        if ( isNaN( value ) ) {
            alert( "Invalid input." )
        } else {
            number = parseInt( value )
        }
    }
    return number;
}

但是,如果我取消提示,这将返回 NaN,这作为返回值没有意义(似乎 isNaN(null) 返回 false )。 (“By”没有意义,我的意思是“不能被程序的其余部分有意义地使用,因为它不能描述发生的事情”)。

经过一番思考,我想出了:

function getInteger(){
    while(true){
        let input = prompt("Input number: ");
        if (input && isNaN( input ) ) {
            // user pressed OK, but input invalid
            alert("Invalid input.");
        } else if (input) {
            // user typed something valid and hit OK
            return parseInt(input);
        } else {
            // User pressed cancel
            alert("I'm out of here.")
            return;
        }
    }
}

getInteger()

我很好奇我是否已经涵盖了所有可能的输入?另外,我的代码是否“写得好”——有更好的方法吗?使用 while(true) 被认为是一个坏主意吗?

我知道一般来说提示可能不是一个好主意,但这不是重点。

感谢任何帮助。

最佳答案

我运行上面的代码,我尝试不输入任何内容,然后按“确定”,它会显示警报,就像我取消提示一样。我认为你还应该检查用户是否输入了某些内容或什么都不输入。您的代码可能如下所示:

function getInteger(){
    while(true){   	  
        let input = prompt("Input number: ");
        
        if (input == null) {
            // user hit cancel
        		alert("I'm out of here.")
            return true;
        } else{
        	  if (input.length<=0 || isNaN( input ) ) {
                // user pressed OK, but input invalid or does not input anything
                alert("Invalid input.");
            } else {
                // user typed something valid and hit OK
                return parseInt(input);
            }
         }                    
        }                     
}

getInteger()

关于JavaScript 整数输入提示验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52078896/

相关文章:

javascript - 当数字相加时提示它只是将数字和另一个数字放在一起

linux - 在 screen 下运行时,当前目录没有出现在标题栏中

javascript - 使用 Javascript 在提示之间创建中断

javascript - 如何在javascript函数中对参数进行排序

javascript - BlockUI 强制所有元素居中

javascript - 即使在 allowedContent 中设置,CKeditor 也会删除样式属性

javascript - 如何检查表单的所有字段是否已填写?

javascript - 从没有 express 的形式转换 body 数据

Java For 循环数据验证

java - Spring REST 验证响应详细信息