如何避免在切换视觉后丢失输入事件?

时间:2017-03-31 15:18:18

标签: javascript jquery

由于程序要求,我有一个应该保持关注的输入。在使用软件时,输入可能会在某些时候被隐藏,但是当再次出现时它应该恢复焦点,但它并没有。如果您检查输入上的绑定事件,您仍然可以看到它实际上没有丢失事件。

有一个简单的jsfiddle显示这种行为:https://jsfiddle.net/5puu261v/



$('#barcode').focus()

$('#barcode').focusout(function(){
  $(this).focus();
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button onclick="$('#barcode').toggle()">Toggle input</button>
<input type="text" id="barcode" />
&#13;
&#13;
&#13;

如果我能在不重新绑定事件的情况下修复或避免它,我将不胜感激。

修改

关键是:为什么输入在切换之后没有聚焦,当点击任何其他元素时(作为再次显示它的按钮)?

2 个答案:

答案 0 :(得分:1)

<强> Updated fiddle

您可以将select * from t where new_status_id = 'completed' and not exists ( select 1 from t as i where i.task_id = t.task_id and i.new_status_id = 'resolved' ) 添加到点击事件中,以便每次点击按钮时都会重点关注输入,例如:

.focus()

HTML:

$('button').click(function(){
    $('#barcode').toggle().focus();
});

希望这有帮助。

<button>Toggle input</button>
<input type="text" id="barcode" />
$('#barcode').focus()

$('#barcode').focusout(function(){
    $(this).focus();
});

$('button').click(function(){
    $('#barcode').toggle().focus();
});

答案 1 :(得分:0)

您可以在focus按钮事件中再次调用方法onclick

&#13;
&#13;
$('#barcode').focus()

$('#barcode').focusout(function(){
  $(this).focus();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button onclick="$('#barcode').toggle();$('#barcode').focus();">Toggle input</button>
<input type="text" id="barcode" />
&#13;
&#13;
&#13;