如何获得以前关注的元素?

时间:2012-03-11 00:55:42

标签: jquery focus selector

如何获得以前关注的元素?

说明:

当用户点击手机键时,它不应该激活或聚焦。 这样:focus或activeElement返回前一个焦点元素(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 个答案:

答案 0 :(得分:1)

您可以使用隐藏元素来跟踪当前焦点的元素。这样,当另一个元素获得焦点时,它将保持前一个元素id。单击启用焦点的元素时,其id将存储在隐藏元素中。当单击焦点禁用元素时,焦点将重新放回先前聚焦的元素和&#39; active_focus_enabled_id&#39;隐藏元素不会更新。您需要使用类来识别哪些元素能够/无法获得焦点,并确保所有启用焦点的元素都具有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>

答案 1 :(得分:0)

将mousedown事件处理程序附加到那些调用preventDefault()。

的按钮