Как получить предыдущий сфокусированный элемент? - PullRequest
1 голос
/ 11 марта 2012

Как получить предыдущий элемент с фокусировкой?

Объяснение:

Когда пользователь нажимает клавиши телефонной панели, он не должен быть активным или сфокусированным.так что: focus или activeElement возвращает предыдущий элемент focus (textarea или input-text).

<script>
    $(function(){
        $(".phonepad").prop("disabled", true);
        $('.phonepad').mousedown(function() { preventDefault();});
        $('.phonepad input').mousedown(function() { preventDefault();});
        $('.phonepad input').click(function(){
            $(document.activeElement).sendkeys(
                       this.name || this.value);
                    );
        });
    });
</script>  
<div class="phonepad" >
<input type="button" value="7" ><br>
<input type="button" value="4" ><br>
</div><br/>
<input type="text" class="output" /><br/>
<textarea class="output"></textarea><br/>

Ответы [ 2 ]

1 голос
/ 10 сентября 2016

Вы можете использовать скрытый элемент, чтобы отслеживать элемент с текущим фокусом. Таким образом, он будет содержать идентификатор предыдущего элемента, когда другой элемент получит фокус. При щелчке по элементу с включенным фокусом его идентификатор сохраняется в скрытом элементе. При щелчке по элементу с отключенным фокусом фокус возвращается обратно к ранее сфокусированному элементу, а скрытый элемент 'active_focus_enabled_id' не обновляется. Вам нужно будет использовать классы, чтобы определить, какие элементы могут / не могут получить фокус, и убедитесь, что все элементы с фокусировкой имеют идентификатор.

<input type='hidden'id='active_focus_enabled_id' value=''id_with_initial_focus'>

<input type='button' class='focus_enabled' id='id_with_initial_focus' value='Whatever #1'>
<input type='button' class='focus_enabled' id='some_other_id' value='Whatever #2'>
...

<input type='button' class='focus_disabled' value='Phone Input #1'>
<input type='button' class='focus_disabled' value='Phone Input #2'>
...

<script>
$('.focus_disabled').click(function(event) {
  var id_previous = $('active_focus_enabled_id' ).val();
  $(''#' + id_previous).focus();
});

$('.focus_enabled').click(function(event) {
  var id_new = $(event.target).attr('id');
  $('active_focus_enabled_id').val(id_new); 
});
</script>
0 голосов
/ 11 марта 2012

Прикрепить обработчик событий mousedown к тем кнопкам, которые вызывают предотвратите ошибку ().

...