Comment utiliser SetFocus sur le contrôle de zone de texte?
Je suis en train de mettre le focus sur une zone de texte.
SetFocus(txtUserName);
Je ne suis pas le voir de toute modification sur la page web.
Quelle est la différence entre .Focus()
et SetFocus()
et qu'est-ce que la fonctionnalité de chaque?
- sur le côté client ou dans le code-behind?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
.Focus()
sur le contrôle de lui-même, ou l'appel de la PageSetFocus()
, en passant une référence pour le contrôle. Notez que vous devez passer dans le contrôle, de ne pas l'ID, qui ne semble pas être pris en charge (à moins que de .NET 3.5). Voir Page MSDN.SetFocus pour plus d'.À la différence entre les méthodes? Ils sont largement interchangeables, et vous devriez appeler celui qui est plus agréable pour les objets que vous avez accès à l' - en général, les appels
.Focus()
sur le contrôle est plus facile. Voir Comment Définir le Focus sur ASP.NET les Contrôles Serveur Web sur MSDN.Selon la façon dont vous souhaitez que votre flux de travail, ou ce que vos spécifications, vous avez 2 options:
Définir si du côté serveur. Comme John mentionné, vous pouvez utiliser le
Focus()
méthode disponible pour des contrôles d'INTERFACE utilisateur. Cela permettra d'appliquer le focus sur le contrôle lorsque votre page s'affiche dans le navigateur. Cependant, comme un résultat de l'interaction de l'utilisateur avec d'autres éléments sur la page, vous perdrez il.De le mettre sur le côté client à l'aide de JavaScript. Cela vous donnera plus de flexibilité, vous pouvez appliquer la mise au point basée sur l'interaction de l'utilisateur.
Pour appliquer l'accent sur le côté client, vous pouvez utiliser le DOM (Document Object Model). Vous devez obtenir une référence pour le contrôle et puis vous pouvez appeler la
focus()
méthode:document.getElementById(txtUserName).focus();
Qui est si l'ID de la commande (comme c'est inscrit sur le côté client) est
txtUserName
. Selon la disposition de votre page, ce sera moins le cas, et vous risquez d'avoir des problèmes si vous modifiez la mise en page, donc ce n'est pas vraiment la meilleure pratique là-bas.Une bonne pratique consiste à enregistrer une variable JavaScript dont le but est de tenir le client ID du contrôle tel qu'il apparaîtra dans le code HTML.
Vous pouvez accomplir cela en utilisant le ClientScriptManager classe:
et puis sur le côté client, vous pouvez dire
Vous pourriez refactoriser cette dans une méthode appelée
setUserNameFocus()
par exemple et ensuite appeler cette méthode sur n'importe quel côté client événement que vous souhaitez. Une pratique populaire est, par exemple, de garder le focus sur un certain champ lorsque l'utilisateur clique sur un endroit de la page. Par exemple, votre code HTMLbody
élément pourrait ressembler à ceci si vous ne voulez pas jamais perdre le focus pour votre élément:Contrôles ont un Focus() méthode qui vous pouvez appeler pour définir le focus à ce contrôle.
En outre, la Page a une méthode SetFocus (), qui prend soit un objet de Contrôle ou l'ID de la commande que vous souhaitez définir le focus.
ou
Pour plus d'informations, consultez:
Il est d'une approche facile pour cela.
Dans Visual Studio, placez les éléments suivants dans l'événement Page_Load...
Veuillez marquer comme "Répondu", si cela répond à votre question.