1 votes

IE6 textBox.focus() ; causant "Unxpected call to method or property access" (appel inattendu à une méthode ou à une propriété)

Le problème est maintenant résolu :) Merci pour l'aide et l'attention de tous !

J'obtiens l'erreur JS "Unexpected call to method or property access" dans IE6 par intermittence sur la ligne " oAutoCompleteTextBox.focus() ;". J'espère que quelqu'un a déjà rencontré ce problème et qu'il pourra m'aider à le résoudre. Vous trouverez ci-dessous le contexte de l'utilisation.

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

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

Mon premier message sur stackoverflow - YAY !

1voto

HOCA Points 647

Le problème est que l'événement jQuery $(document).ready() n'est pas déclenché lors des retours asynchrones du panneau de mise à jour. La solution est de refactoriser la définition de la fonction à l'intérieur de ready() en une définition de fonction explicite ( c'est-à-dire la fonction pageReady(){...} ) et ajoutez le nouvel eventhandler pageReady() à ASP.net Sys.WebForms.PageRequestManager. endRequest qui n'est déclenché que lors des retours asynchrones.

Le code ressemble donc maintenant à ceci :

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();
    }
}

Merci pour l'aide et l'attention de chacun - il m'a fallu du temps pour trouver la solution, je suis content que le problème soit résolu :)

0voto

Shawn Steward Points 4632

OAutoCompleteTextBox est-il déclaré globalement ? Vous le définissez dans la fonction document.ready mais essayez de l'utiliser dans une autre fonction.

0voto

Ayyash Points 1160

Êtes-vous sûr qu'il s'agit d'une zone de texte ? que fait la fonction "canFocus" ? alertez sur cette ligne, oAutoCompleteTextBox.tagName, puis si c'est "INPUT" alertez .type, si c'est "text" alors vous avez un problème :) connaissant IE6, c'est peut-être un problème de timing rien mais, si vous appelez setupdefaultvalues dans un settimeout de 10 secondes, cela POURRAIT fonctionner

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X