我有一点问题:
我有一个模式在使用ajax搜索结果后打开:它会打开并正确显示所有请求的结果。
收盘时,我需要清空另一个带有ID"结果"的div,用ID清空输入"搜索"并专注于它:
这是我的HTML:
<div class="col-sm-3">
<form action="" method="post" id="searchit">
<div class="input-group mar-btm">
<span class="input-group-addon"><i class="fa fa-search fa-lg"></i> Ricerca:</span>
<input type="text" id="search" tabindex="1" class="form-control" name="search" placeholder="Codice, EAN o Testo" />
</div>
</form>
</div>
<div class="col-sm-4" id="results"></div>
更新 jQuery的:
$(".modal").on('hidden.bs.modal', function () {
$("#results").empty();
$("#search").val('');
$("#search").focus();
});
我也尝试过:
$(".modal").on('hidden.bs.modal', function () {
$("#results").empty();
$("#search").val('').focus();
});
和(这是此页面上唯一的文字输入):
$(".modal").on('hidden.bs.modal', function () {
$("#results").empty();
$("#search").val('');
$('input[type="text"]').focus();
});
在每种情况下,empty()和val()都正常工作但没有任何工作与focus()!控制台中没有抛出错误...
我无法弄清楚我错过了什么/做错了什么!
有些帮助吗?提前谢谢!
答案 0 :(得分:3)
在事件处理程序中尝试使用.focus()
的问题通常源于正在处理的事件也对焦点产生影响。为了解决这个问题,我通常只是暂停.focus()
调用:
$(".modal").on('hidden.bs.modal', function () {
$("#results").empty();
$("#searc").val('');
setTimeout(function() {
$("#searc").focus();
}, 10);
});
在触发事件处理程序全部完成之后,超时处理程序将立即运行。