jQuery - фокусировка только тогда, когда другой элемент не нажат - PullRequest
3 голосов
/ 18 ноября 2010

Когда пользователь фокусируется на определенном элементе, я отображаю кнопку сохранения. На фокусе я удаляю кнопку сохранения.

alt text

Пользователь может отправить ввод, нажав клавишу возврата или нажав «Сохранить». Когда они нажимают кнопку сохранения, ввод теряет фокус, а кнопка сохранения удаляется, таким образом, не регистрируя щелчок. Можно ли в фокусе сказать, была ли нажата кнопка сохранения?

В рамках функции фокуса я делаю что-то вроде этого:

        $('#save_button').click(function(){
            saveEditingField(this); //save input
            $('#save_button').die("click");
        });

        $('.editing').focusout( function(e) {
            $('#isediting').attr('value','false');
            $('#edit_controls').remove()
        });

Я попытался добавить задержку в функцию remove (), но при переходе между входами отображается несколько кнопок сохранения (в то время как остальные удаляются).

Есть идеи?

Ответы [ 3 ]

6 голосов
/ 18 ноября 2010

Я думаю, что вам нужно всего лишь небольшой тайм-аут между фокусировкой и удалением / скрытием кнопки.

5 голосов
/ 18 ноября 2010

Вы можете проверить, находится ли мышь над кнопкой на фокусе, прежде чем скрывать кнопку.

Подтверждение концепции здесь: http://jsfiddle.net/dnsEM/

Небольшая проблема в этой реализации заключается в том, что сохранениекнопка не исчезает, если поле ввода теряет фокус, когда мышь находится над кнопкой, и скрывается только при наведении мыши.

0 голосов
/ 18 ноября 2010

Создает div, содержащий оба элемента (текст ввода и кнопку), и привязывает событие focusout к этому div

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...