0

我有一个带有大表单的页面,我正在尝试分配页面加载时具有焦点的表单元素。它似乎正在工作,因为光标位于所选表单元素中,但是没有触发焦点事件。如果我最小化浏览器然后再次最大化它,焦点事件就会被触发,但不会在 jQuery(document).ready() 上触发。任何建议表示赞赏...

jQuery(document).ready(function()
{
    console.log("call focus");
    jQuery("#tbl_Employees").find(".employeeinfo:eq(" + IndexEmp + ")").find("tr#trSequence").find("td:eq(5)").children(":first").focus();
});    

jQuery(":input").focus(function(e)
{
    console.log("enter focus");
});    
4

2 回答 2

4

I think you should put the $(":input") in the ready function and before the $("#tbl_Employees")

jQuery(function() { // <-- Same exact thing as `jQuery(document).ready(function () {`, just much shorter. Welcome to jQuery
    jQuery(':input').focus(function(e) {
        console.log("enter focus");
    });
    console.log("call focus");
    jQuery("#tbl_Employees").find(".employeeinfo:eq(" + IndexEmp + ")").find("tr#trSequence").find("td:eq(5)").children(":first").focus();
})
于 2013-09-19T12:38:26.880 回答
1

只是一个猜测,但您的事件处理程序可能也应该放在文档就绪块中。我不确定该脚本的位置(即在头部或正文的末尾),但如果在调用事件处理程序时 :input 不存在,则不会绑定任何事件。

尝试这个:

jQuery(document).ready(function () {

    jQuery(':input').focus(function (e) {
        console.log("enter focus");
    });

    console.log("call focus");
    jQuery("#tbl_Employees").find(".employeeinfo:eq(" + IndexEmp + ")").find("tr#trSequence").find("td:eq(5)").children(":first").focus();
});
于 2013-09-19T12:41:32.707 回答