使用javascript获取用户输入而不使用提示

时间:2012-12-04 13:11:13

标签: javascript user-input

我有一个设置,我允许用户在常规的html文本字段中键入命令。我在文本字段上处理onkeypress事件,检查它是否是已按下的回车键,然后解析并执行命令。

一个例子可能是:

deletefile /testfolder/testfile.html

代码类似:

inputControl.onkeypress = function(e) { 
    if (e.which == 13) { 
        var outputMessage = commandHandler.executeCommand(inputControl.value);
        printOutputToScreen(outputMessage);
        inputControl.value = "";
        inputControl.focus();
    }
}

(顺便说一下,这不是我的代码实际上看起来的样子,只是一个例子)

这里的想法是能够编写命令,查看输出,编写另一个命令,查看输出等。

executeCommand解析命令字符串并使用适当的参数调用特定命令。

> deletefile /test1.html
The file was deleted

> deletefile /test2.html
An error occured while trying to delete the file

这部分很简单。我需要帮助的是:如果用户只输入“deletefile”,我希望能够询问用户(使用outputarea)“你要删除哪个文件?”。

我知道我可以这样做:

var additionalInput = prompt("Which file?");

,但我不想使用提示。

忘记我的人为举例,有没有人知道在javascript(不使用提示符)中询问用户输入的好方法,如:

var status = doSomeStuff(args);  
if (status.fail) {
    tmp = getUserInput();  
    doSomeFinalStuffBasedOnTheUserInput(tmp);
}

这甚至可能吗?

我不确定我能在这里解释自己,但如果有人觉得他们可以帮助我,请告诉我: - )

一种解决方案可能是实现一个全局状态变量,并将其用作keypress-eventhandler中的一种机制,将输入路由到命令,如:

inputControl.onkeypress = function(e) {
  if (e.which == 13) {
      if (state.additionalInputPending && currentCommand != null) {
          currentCommand.executeWithAdditionalInput();
      } else {
          // perform regular command execution
      }
  }
}

这样我的“app”需要处理内部状态变量,并在keypresses之间存储currentCommand。

1 个答案:

答案 0 :(得分:0)

您可以使用jquery / javascript解决方案,在其中显示“花哨”对话框(不是JS提示)以询问输入。

http://trentrichardson.com/Impromptu/#Examples最后一个示例显示了表单。 Impromptu只是对话/提示替代方案的众多(很多很多)解决方案之一。

唯一想到的另一个选择是直接在JS控制台中创建它,就像创建一个真正的命令行工具一样。