我试图在ajax更新期间专注于新创建的输入元素,但焦点以某种方式丢失。jquery ajax:获取焦点后新的输入字段失去焦点
var options = {
url: aURL,
type: "POST",
dataType: "xml",
data: params,
success: function(responseData, status, xhr) {
// replace DOM element
$(".placeholder").html(responseData);
}
};
$.ajax(options);
的responseData里面,有一个脚本
$(function(){createInputAndFocus();});
该脚本将阿贾克斯的DOM更新过程中被执行。
function createInputAndFocus() {
$(".placeholder").append('');
$(".placeholder").find("#foo").focus();
// debug: check if it is focused
console.log("active element: " + document.activeElement.id);
}
从浏览器控制台中,创建的输入(foo)被关注。但是在ajax完成后,它不会在屏幕上聚焦(突出显示)。从控制台,验证它不重点。 document.activeElement与ajax更新之前的相同。
jquery是否在ajax之后恢复原始焦点?如何在ajax更新后关注新的输入元素?我试图设置一个计时器
function createInputAndFocus() {
$(".placeholder").append('');
$(".placeholder").find("#foo").focus();
setTimeout(function() {$(".placeholder").find("#foo").focus();}, 3000);
}
计时器工作。计时器不是安全的解决方案。如果将超时设置得太短,超时可能会被触发得太早,如果将超时设置太长,用户必须等待。感谢帮助。
2016-01-10
Dave