12
votes

Comment utiliser SetFocus sur le contrôle de la zone de texte?

J'essaie de définir la mise au point sur une zone de texte.

SetFocus(txtUserName);


1 commentaires

sur le côté client ou en code - derrière?


5 Réponses :


2
votes
 txtUserName.Focus()
For more info, check:
MSDN - How to: Set Focus on ASP.NET Web Server Controls 
MSDN - Control.Focus Method

2 commentaires

Quelle est une différence entre .focu () et setFocus () et quelle est la fonctionnalité de chacun?


@NovicicEveloper - Focus () appelle simplement SetFocus () - ils sont les mêmes.



2
votes

Les commandes ont une méthode de mise au point () que vous pouvez appeler pour définir la mise au point sur ce contrôle. XXX PRE>

En outre, la page a une méthode SetFocus (), qui prend un objet de contrôle. Ou l'ID de la commande que vous souhaitez définir Focus à. P>

this.Page.SetFocus(txtUserName.ClientID);


1 commentaires

@NovicicEveloper - Après avoir examiné le code source, la réponse est oui, elles ont la même fonctionnalité.



17
votes

Vous pouvez utiliser .focus () sur le contrôle lui-même ou appelez la page SETFOCUS () , en transmettant une référence au contrôle. Notez que vous devez transmettre le contrôle, pas l'identifiant, car cela ne semble pas être pris en charge (au moins comme de .NET 3.5). Voir MSDN Page.Setfocus pour plus.

quant à la différence entre les méthodes? Ils sont en grande partie interchangeables et vous devriez appeler, ce qui est plus pratique, compte tenu des objets que vous avez accès - généralement appeler .focus () sur le contrôle est plus facile. Voir Comment définir la mise au point sur ASP.NET Web Server Controls sur msdn.


0 commentaires

4
votes

Selon la façon dont vous voulez que votre flux de travail soit, ou quelles sont vos spécifications, vous avez 2 options:

  1. définir si du côté serveur. Comme John mentionné, vous pouvez utiliser la méthode focus () code> disponible pour les contrôles d'interface utilisateur. Cela appliquera l'accent sur le contrôle lorsque votre page rendra dans le navigateur. Cependant, à la suite de l'interaction de l'utilisateur avec d'autres éléments de la page, vous le perdez. P> LI>

  2. définissez-le sur le côté client à l'aide de JavaScript. Cela vous donnera plus de flexibilité car vous pouvez appliquer l'accent basé sur l'interaction de l'utilisateur. Pour appliquer l'accent sur le côté client, vous pouvez utiliser le DOM (modèle d'objet de document). Vous devez obtenir une référence au contrôle, puis vous pouvez appeler la méthode Focus () CODE>: P>

    document.getelementByID (Textusername) .FOCUS (); P> LI> ol>

    si l'identifiant du contrôle (tel qu'il est enregistré sur le côté du client) est txtaSername code>. Selon la mise en page de votre page, cela sera moins probable le cas et vous pourriez avoir des problèmes si vous modifiez la mise en page, ce n'est donc pas vraiment la meilleure pratique. P>

    Une bonne pratique consiste à enregistrer une variable JavaScript dont le but est de contenir l'ID client du contrôle tel qu'il sera rendu dans le HTML. Vous pouvez y accomplir en utilisant le ClientcriptManager Classe: p> xxx pré>

    puis sur le côté client, vous pouvez dire p> xxx pré>

    vous pouvez le refroidir dans une méthode appelée SETUSERNAMEFOCUS () CODE> Par exemple, puis appelez cette méthode sur n'importe quel événement côté client que vous souhaitez. Une pratique populaire est par exemple de garder l'accent sur un certain domaine lorsque l'utilisateur clique sur un emplacement de la page. Par exemple, votre élément HTML Body CODE> pourrait ressembler à ceci si vous ne voulez jamais perdre la mise au point de votre élément: p>

    <body onload="setUserNameFocus();" onclick="setUserNameFocus();">
    


1 commentaires

Le lien vers les ClientscriptManager est le mauvais. Cela pointe vers l'API obsolète. Je reçois une erreur lorsque vous essayez de modifier la réponse. Je vais essayer de le modifier plus tard. Entre temps, le lien vers la référence correcte est celui-ci: msdn.microsoft.com/en-us/library/...



1
votes

Il existe une approche facile de cela.

dans Visual Studio, placez les éléments suivants dans la page_Load Event ... xxx

veuillez marquer comme "Répondu", si qui répond à votre question.


0 commentaires