0

这是我的代码的一部分:

document.querySelector("#edit_<?= $row["item_id"]; ?>").addEventListener("submit", function(a){
    if(!completed){
        a.preventDefault();
    }else{
        return true;
    }

    if((function(){
        alertify.prompt("New Amount of Item : ", function(e, str){
            if(e){
                document.querySelector("#edit_<?= $row["item_id"]; ?> input[name=\"item_amount\"]").value = str;
                var completed = true;
                return true;
            }else{
                return false;
            }
        })
    )() == true){
        document.querySelector("#edit_<?= $row["item_id"]; ?>").submit();
    }
});

哪里<? $row["item_id"]; ?>会返回一些东西(忽略它,这不是真正的问题)

但问题是我需要等到alertify.prompt()getsstr然后把它放到

document.querySelector("#edit_<?= $row["item_id"]; ?> input[name=\"item_amount\"")

(对不起这个凌乱的代码)

我能做些什么来解决这个问题?

PS 如果可能,最好不要使用 jQuery 解决方案,因为它已经给出。请使用仅限 Javascript 的解决方案。

4

4 回答 4

0

prompt 函数接收一个回调函数,该函数将在接收到文本后执行。你可以在那里继续你的逻辑

alertify.prompt("Message", function (e, str) { // str is the input text if (e) { // user clicked "ok" } else { // user clicked "cancel" } }, "Default Value");

注意:取自Alertify 示例

于 2014-07-24T09:05:45.067 回答
0

不要直接混合使用javascript(客户端)和php(服务器),将数据从客户端传递到服务器或服务器到客户端,您可以使用ajax

于 2014-07-24T09:06:08.187 回答
0

删除第二个if条件,只使用alertify回调函数:

// define the completed variable outside the callbacks
var completed = false;
document.querySelector("#edit_<?= $row["item_id"]; ?>").addEventListener("submit", function(a){
    if(!completed){
        a.preventDefault();
    }else{
        return true;
    }
    alertify.prompt("New Amount of Item : ", function(e, str){
        if(e){
            document.querySelector("#edit_<?= $row["item_id"]; ?> input[name=\"item_amount\"]").value = str;
            //no var before completed, because then it would be local to this callback function
            completed = true;
            // here instead returning "true" do what you wanted to do if true
            document.querySelector("#edit_<?= $row["item_id"]; ?>").submit();
        }
    });
});
于 2014-07-24T09:11:40.517 回答
0

prompt方法是异步的,因此在您退出外部函数后将调用回调。从回调提交表单:

alertify.prompt("New Amount of Item : ", function(e, str){
  if(e){
    completed = true; // note: no "var"
    var f = document.querySelector("#edit_<?= $row["item_id"]; ?>");
    document.querySelector("input[name=\"item_amount\"]", f).value = str;
    f.submit();
  }
})
于 2014-07-24T09:13:12.370 回答