我正在一个网站上工作,我需要全天候关注,因为它是条形码阅读器。但是在网站上还有其他输入,用户必须能够自己填充他,所以我不能经常关注条形码输入。
我一直试图使其工作时间为自动对焦条形码输入每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。
我真的不需要让它适用于间隔,但我已经尝试了太多的东西。希望有人可以帮忙,谢谢。
答案 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)
以下将:
$(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;