IE6 textBox.focus();导致“意外调用方法或属性访问”

时间:2009-12-28 20:06:14

标签: javascript jquery internet-explorer-6 focus

现已解决问题:)感谢大家的帮助和关注!

我在“ oAutoCompleteTextBox.focus();”行中间歇性地在IE6中收到JS错误“对方法或属性访问的意外调用”。希望有人之前已经看过这个问题,并且可以提供一些有关如何解决它的见解。以下是用法的上下文。

$(document).ready(function () {
    ...
    oAutoCompleteTextBox = GetElement('<%=this.AutoCompleteTextBox.ClientID%>');
    ...
    SetupDefaultValues();
}

function SetupDefaultValues() {
    ...
    if(canFocus(oAutoCompleteTextBox)) {
        oAutoCompleteTextBox.focus();
    }
}

我在stackoverflow上的第一篇文章 - YAY!

3 个答案:

答案 0 :(得分:1)

好的,问题是在updatepanel异步回发上没有触发jQuery $(document).ready()事件。解决方案是将ready()中的函数定义重构为显式函数定义(即函数pageReady(){...} )并将新的pageReady()事件处理程序添加到ASP.net系统.WebForms.PageRequestManager endRequest 仅在异步回发时触发的事件。

所以代码现在看起来像这样:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(pageReady);
$(document).ready(pageReady);

function pageReady() {
    ...
    oAutoCompleteTextBox = GetElement('<%=this.AutoCompleteTextBox.ClientID%>');
    ...
    SetupDefaultValues();
}

function SetupDefaultValues() {
    ...
    if(canFocus(oAutoCompleteTextBox)) {
        oAutoCompleteTextBox.focus();
    }
}

感谢大家的帮助和关注 - 花了一段时间才弄明白,我很高兴它已经解决了:)

答案 1 :(得分:0)

oAutoCompleteTextBox是全局声明的吗?你是在document.ready函数中设置它,但试图在另一个函数中使用它。

答案 2 :(得分:0)

你确定它是一个文本框吗? “canFocus”功能有什么作用?警告在该行,oAutoCompleteTextBox.tagName,然后如果它是“INPUT”警报.type,如果它是“文本”然后你有问题:)知道IE6,它可能是一个时间问题,但是,如果你在一个调用setupdefaultvalues settimeout为10秒,我可以工作