我想更改Sk.inputfun()
爲Skulpt讓用戶鍵入一個<textarea>
並點擊ENTER
鍵提交。我需要將單個函數傳遞給Skulpt以獲取用戶輸入,但是,除prompt()
之外,我找不到任何其他方法來執行此操作。我的問題與以下類似,但是沒有答案。 Skulpt Assign Sk.inputfun() to type response into output when input() called 我認爲這樣做的唯一方法是使用setTimeout()
延遲返回,直到事件觸發回車鍵按鈕並更改了標誌。等待一個事件發生在Javascript中的一個函數Skulpt
var enterPressed = false;
$("#output").keyup(function(e){
if((e.keyCode || e.which) == 13) { //Enter keycode
enterPressed = true;
}
});
,然後等待我發生了變化:
Sk.configure({
inputfun: function (prompt) {
function checkFlag() {
if(enterPressed) {
enterPressed = false
return $('#output').val();
} else {
window.setTimeout(checkFlag, 100);
}
}
return checkFlag();
},
inputfunTakesPrompt: true,
output: outf,
read: builtinRead
});
但是幾個原因,這這麼想的工作。 a)超時函數不能返回一個值,並且b)超時函數甚至不會延遲返回函數,並且它什麼也不返回。
我已經嘗試使用.done()
以及但不能得到它的工作。
似乎沒有辦法做到這一點,我可以在網上找到任何幫助將不勝感激!
非常感謝!我打算將原始的textarea val與最終的val進行比較以獲得用戶輸入,但是您的解決方案要好得多。 – DeltaMarine101