Cordova Prompt插件不会等待用户输入

时间:2012-10-17 00:48:33

标签: javascript jquery cordova prompt

我正在使用Cordova 2.1.0和位于at this github的提示插件。我已经使用.h,.m和.js文件正确设置了插件,并在index.html中正确链接了它。

我遇到的问题是,当调用提示函数时,它不会等待用户在继续下一个函数之前输入文本字符串,在我的使用中,使用该函数将表单值保存到localstorage用户文本字符串作为存储的ID。 此问题导致本地存储键值对与空键存储并破坏存储系统。

以下是我用来调用Prompt插件的代码示例:

function doPrompt() {
    window.plugins.Prompt.show(
        "What is the name of this job?",
        function (userText) {
            $('#promptinput').text(userText)
        }, 
        function () {
        },
        "Save",
        "Cancel"
    );
};

以下是我调用提示插件和存储值的函数的示例:

function showPrompt() {
    doPrompt();
    alert("prompted");
    writeLocal();
    alert("written");
}

警报就在那里,所以我可以看到下一个函数移动到什么时候,writeLocal函数是写入localstorage的地方。

对此的任何帮助都会很棒。我一直在试图让它正常工作。

1 个答案:

答案 0 :(得分:1)

是的,您需要了解异步代码的工作原理。 window.plugins.Prompt.show的第二个参数是单击“确定”按钮时调用的回调。没有“等待”用户点击OK;代码是非阻塞的。

你想要这样的东西:

function doPrompt() {
    window.plugins.Prompt.show(
        "What is the name of this job?",
        function (userText) {
            $('#promptinput').text(userText);
            alert("prompted");
            writeLocal();
            alert("written");
        }, 
        function () {
        },
        "Save",
        "Cancel"
    );
};

现在,当用户点击OK时,它会设置#promptinput,触发警报,然后调用writeLocal。如果writeLocal也是异步的,那么第二个警报也会立即被触发;否则它将在writeLocal返回时触发。