当焦点从其他输入中丢失时,如何聚焦主输入?

时间:2014-12-30 08:54:32

标签: javascript jquery html

我正在一个网站上工作,我需要全天候关注,因为它是条形码阅读器。但是在网站上还有其他输入,用户必须能够自己填充他,所以我不能经常关注条形码输入。

我一直试图使其工作时间为自动对焦条形码输入每1.5秒,当输入聚焦时停止间隔,并在用户聚焦输出时再次启动它。但它不起作用。

<script type="text/javascript">

    $(document).ready(fucntion(){
        $('#barcode_input').focus();
    });

    $(":input").focusin(function(){
        if(barCodeFocusInterval) {clearInterval(barCodeFocusInterval);}
    });

    $(":input").focusout(function(){
        barCodeFocusInterval = setInterval(function(){
            $('#barcode_input').focus();
        }, 1500);
    });
</script>

我认为它不起作用,因为当focusin被触发时,什么应该停止间隔,它已经发送命令来聚焦barcode_input所以我不能将任何其他输入聚焦超过1.5s。

我真的不需要让它适用于间隔,但我已经尝试了太多的东西。希望有人可以帮忙,谢谢。

2 个答案:

答案 0 :(得分:0)

如果我理解正确 - setTimeout()

$(function() {
    var is_focused = false;

    function focus_to_barcode() {
        if (!is_focused) {
            $('#barcode_input').focus();
        }
    }   

    $(":input").focusin(function () {
        is_focused = true;
    });

    $(":input").focusout(function () {
        is_focused = false;
        setTimeout(focus_to_barcode, 1500);
    });
});

请参阅example,请

答案 1 :(得分:0)

以下将:

  • 专注于加载主div
  • 只允许用户专注于其他元素,如果他们有&#34;允许&#34;类
  • 一旦用户点击了一个带有&#34;允许&#34;的元素,就会重新聚焦到主div。类

&#13;
&#13;
$(document).ready(function(){
   $('#barcode_input').focus();


   var elements = $( "body" ).find( "*" );

   $(elements).each(function(i, elm){
                 
     $(elm).blur(function(){
        if(this.id != 'barcode_input'){
             $('#barcode_input').focus();
         }
      });
      $(elm).focus(function(){
         if(this.id != 'barcode_input'&&!$(this).hasClass('allowed')){
             $('#barcode_input').focus();
         }
      });
  
                 
   });
  
});
&#13;
#someDiv{
   width:100px;
   height:100px;
   margin-top:30px;
   background-color:#cccccc;
  }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="barcode_input"/>
<input type="text" class="allowed" id="barcode_input2"/>
<input type="text" class="allowed" id="barcode_input3"/>

<input type="text" id="someOtherInput" value="input that is not allowed" size="44"/><br>
<div id="someDiv" contentEditable="true">div that is not allowed<div>
&#13;
&#13;
&#13;