Я хочу защитить входные данные всплывающим окном подтверждения, и когда кто-нибудь подтвердит, я хочу удалить эту защиту и дать фокус на вход , Моя попытка была: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();
}
}
Когда я нажимаю на входе, я получаю всплывающее окно подтверждения. Если я нажму OK, обработчик on_focus действительно будет удален (потому что нажатие второй раз на входе не вызывает всплывающее окно), но вход не получает фокуса. (input.focus(), кажется, не имеет эффекта).
Я делаю неправильно?
EDIT: Извините, это был не тот код, который я использовал. Здесь (с испытательной средой 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 = confirm("Are you sure?");
по
var conf = true;
затем он работает.
Прошу прощения. Я использовал ссылку на функцию, но я скопировал неправильный код в минимальном примере :(Но он все еще не работает, так или иначе из-за поля подтверждения. Я отредактирую свой вопрос. –