Javascript 如何清除Inquirer.js中的错误输入 const inquirer=require(“inquirer”) 变量问题=[ { 键入:“数字”, 姓名:“姓名”, 信息:“请输入玩家数量”, 验证:函数(名称){ var valid=Number.isInteger(名称) return valid | | `请输入一个有效的整数` }, }, ] 函数promptUser(){ 询问者 .提示(问题) 。然后((答案)=>{ log(`您输入了${answers[“name”]}!`) }) .catch((错误)=>console.log(`Please enter a number`) } 提示用户()
考虑到上面的代码,我注意到在以前的视频中,如果包含验证,并且失败,输入将被清除。然而,在我的例子中,我得到的是一个不会自动清除的NaN。假设我启动应用程序并输入'abcdefg':Javascript 如何清除Inquirer.js中的错误输入 const inquirer=require(“inquirer”) 变量问题=[ { 键入:“数字”, 姓名:“姓名”, 信息:“请输入玩家数量”, 验证:函数(名称){ var valid=Number.isInteger(名称) return valid | | `请输入一个有效的整数` }, }, ] 函数promptUser(){ 询问者 .提示(问题) 。然后((答案)=>{ log(`您输入了${answers[“name”]}!`) }) .catch((错误)=>console.log(`Please enter a number`) } 提示用户(),javascript,command-line-interface,inquirer,inquirerjs,Javascript,Command Line Interface,Inquirer,Inquirerjs,考虑到上面的代码,我注意到在以前的视频中,如果包含验证,并且失败,输入将被清除。然而,在我的例子中,我得到的是一个不会自动清除的NaN。假设我启动应用程序并输入'abcdefg': ? Please the number of players NaN >> Please enter a valid whole number 如果我键入任何内容,它将被添加到NaN的末尾。Backspace和delete不会删除NaN,但是如果我多次按向上箭头按钮直到不再显示以前的输入,它将被删除。我
? Please the number of players NaN
>> Please enter a valid whole number
如果我键入任何内容,它将被添加到NaN的末尾。Backspace和delete不会删除NaN,但是如果我多次按向上箭头按钮直到不再显示以前的输入,它将被删除。我做错什么了吗?它无法清除输入,而且输入被某种方式阻止,这真是令人恼火。我解决这个问题的方法是使用一个验证函数,该函数也实现了过滤函数:
const validateNumbers = moreValidationChecks => ({
validate: input => {
if (input === '') {
return 'Please provide a valid number greater then 0'
}
return moreValidationChecks ? moreValidationChecks(input) : true
},
filter: input => {
// clear the invalid input
return Number.isNaN(input) || Number(input) <= 0 ? '' : Number(input)
},
})
您还可以对此进行其他验证:
return inquirer.prompt([
{
name: 'amount',
message: 'Type a number please',
type: 'number',
...validateNumbers(input => {
if (Number(input) < 10)) {
return "This must be less then 10"
}
return true
}),
},
])
返回查询器提示([
{
名称:'金额',
消息:“请键入一个号码”,
键入:“编号”,
…验证枚举数(输入=>{
如果(数字(输入)<10)){
return“此值必须小于10”
}
返回真值
}),
},
])
然而,我也被卡住了,每当你通过一个有效的数字,抛出一个验证错误,它仍然不能被删除。您需要键入一些文本,然后它将被删除,因为这将使其变为NaN我发现将类型从数字更改为输入可以实现此目的。下面是我使用的一个提示符示例
{
type: "input",
message: "Please enter id:",
name: "id",
validate: (answer) => {
if (isNaN(answer)) {
return "please enter a number";
}
return true;
},
},
{
type: "input",
message: "Please enter id:",
name: "id",
validate: (answer) => {
if (isNaN(answer)) {
return "please enter a number";
}
return true;
},
},