我想通過確認彈出窗口來保護輸入,並且當確認時,我想要刪除此保護,並將焦點輸入到輸入。 我的嘗試是:javascript:如何在觸發關閉(「焦點」)後關注對象
my_input.on('focus', switch_off_focus_handler(my_input));
function switch_off_focus_handler(input){
var confirm = confirm("Are you sure?");
if (confirm) {
input.off('focus');
input.focus();
}
}
當我點擊輸入,我得到了確認彈出。如果我點擊確定,on_focus處理程序確實被刪除(因爲在輸入上再次點擊不會觸發彈出窗口),但是輸入沒有獲得焦點。 (input.focus()似乎沒有效果)。
我做錯了嗎?編號: 對不起,這不是我使用的正確的代碼。這裏是(用html環境進行測試):
<!doctype html>
<html>
<head>
<script src="/static/js/jquery-1.11.1.min.js" type="text/javascript"></script>
</head>
<body>
<input type="text" value="HALLO" id="my_input">
<script type="text/javascript">
my_input=$("input#my_input")
my_input.on('focus', switch_off_focus_handler(my_input));
function switch_off_focus_handler(input){
return function() {
var conf = confirm("Are you sure?");
if (conf) {
input.off('focus');
input.focus();
}
}
}
</script>
</body>
</html>
這個問題似乎來自確認對話框。如果我通過
var conf = true;
更換
var conf = confirm("Are you sure?");
然後它工作。
對不起。我確實使用了函數引用,但是我在最小的例子中複製了錯誤的代碼:(但它仍然不起作用,不知何故,因爲確認框,我將編輯我的問題。 –