javascript - Npm 提示 - 自定义验证和多行消息?

标签 javascript node.js prompt

我正在开发一个基于nodejs和npm包“prompt”的CLI程序。 假设我想要这个提示,将输入放入变量 pet 中:

Choose a pet:
(1) - Cat
(2) - Dog
(3) - Fish
(4) - Rabbit
(5) - Rat
: > 

基本上我完成了该功能,但遇到了以下问题:

  1. 如果我使用 conform 函数进行自定义验证 - 那么我的自定义消息 - 多行文本 - 永远不会出现。变量的名称 - pet - 仅出现。但我想要进行验证,因为我想确保用户不会输入 333

  2. 如果我删除 conform 自定义验证 - 我可以拥有多行文本,但随后会发生其他情况:发生输入的闪烁矩形与多行文本重叠。而且我无法让它在多行消息的最后一行之后闪烁

(在上面的示例中,闪烁发生在数字 5 上。)

知道如何解决我遇到的两个问题吗? ...:)

==================编辑:添加代码示例===================

这就是我生成多行文本的方法:

// generate the multiline text .. 
var petsMessage = 'Choose a pet: \n';
var pets = [...];
for(var i = 0, l = pets.length; i < l; i++) {
    petsMessage += ' (' + (i+1) + ') - ' + pets[i] + "\n";
}

这就是我生成带有多行文本的提示,但没有验证的方法:

// define the prompt stuff .. 
var promptInfo = {
    properties: {
        Pet: {
            message: petsMessage,
            required: true
        },
    }
};

这是经过验证的,但多行消息不起作用:

// define the prompt stuff .. 
var promptInfo = [
    {
        name: 'Pet',
        message: petsMessage,
        required: true,
        conform: function(value) {

            value = parseInt(value);

            if(value > 0 && value < pets.length) {
                return true;
            } else {
                return false;
            }
        }
    }
];

最佳答案

我认为问题在于,在验证的第二个片段中,您在消息属性中分配了实际问题,您应该在描述中分配它。 message 属性指的是错误消息。请尝试一下:

var petsMessage = 'Choose a pet: \n';
var pets = ["dog","cat","frog"];
for(var i = 0, l = pets.length; i < l; i++) {
    petsMessage += '\t (' + (i+1) + ') - ' + pets[i] + "\n";
}
var prompt = require('prompt');
var promptInfo = [
    {
        name: 'Pet',
        description: petsMessage,
        required: true,
        message: 'Options allowed:: 1'+'-'+pets.length,
        conform: function(value) {

            value = parseInt(value);

            return value > 0 && value <= pets.length

        }
    }
];

prompt.start();

prompt.get(promptInfo, function (err, result) {
    console.log('you Choose',result,'::::',pets[result.Pet-1])
});

关于javascript - Npm 提示 - 自定义验证和多行消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33303075/

相关文章:

javascript - 如何重置 Angular 2中的输入值

javascript - 使用 fromCharCode 的 HTML 换行符不起作用

node.js - Yeoman npm 在 Windows 上安装失败

node.js - ExpressJs 服务器以及命令行界面

javascript - 正则表达式以避免特殊字符且不应以数字开头

javascript - 在哪里将我的 mongodb Atlas 连接到我的 React 应用程序?

javascript - 如何使用聚合MongoDB获取数据Mongo数据

node.js - 使用适用于 Linux 的 Windows 子系统在 Visual Studio Code 中进行调试

javascript - while 循环中的提示作为密码输入有多安全?

python - IPython 5.0 : Remove spaces between input lines