2008-12-22 9 views
0

Je travaille avec ASP.NET en faisant du javascript côté client.
J'ai le javascript suivant pour gérer un callback XMLHTTPRequest. Dans certaines situations, la page sera publiée à l'aide de la fonction __doPostBack() fournie par ASP.NET, répertoriée dans le code ci-dessous. Cependant, je voudrais être en mesure de définir le focus d'une liste déroulante contrôles après la publication. Est-il possible de définir ceci en utilisant Javascript, ou ai-je besoin de truquer cela d'une autre manière.Définition du focus sur la publication lancée par javascript

function onCompanyIDSuccess(sender, e) { 
     if (sender == 0) 
      document.getElementById(txtCompanyIDTextBox).value = ""; 
     document.getElementById(txtCompanyIDHiddenField).value = sender; 
     if (bAutoPostBack) { 
      __doPostBack(txtCompanyIDTextBox, ''); 
     } 
    } 

Répondre

0

J'ai trouvé la solution pour celle-ci. Dans le code derrière le gestionnaire d'événements étant appelé pour chaque élément particulier, j'appelle le Control.Focus() comme la dernière ligne. Par exemple, si un gestionnaire d'événements dropdownlist est déclenchée, et le contrôle suivant pour obtenir concentré est la zone de texte codepostal:

protected void ddl_state_selectedValueChanged(Object sender, EventArgs e) 
{ 
    // ... here is all my code for the event handler 

    txtZipCode.Focus(); 
} 

Il était beaucoup plus facile que je ce que je voulais faire. Je continue d'essayer de trop compliquer les choses en créant Javascript à la volée qui fait exactement ce que Microsoft fait déjà pour moi dans le cadre.

3

Depuis que vous faites une publication complète, vous aurez besoin d'utiliser Page.SetFocus sur le côté serveur pour obtenir le JavaScript approprié émis sur la prochaine chargement de la page. Sinon, dans une solution AJAX pure - document.getElementById ('id'). Focus() ferait l'affaire.

+0

+1. Vous prouvez ce qui fait de SO une ressource fantastique sur le web. – PEZ

Questions connexes