Comment faire la mise au point par défaut dans la page de contenu de la page principale

J'ai une page principale avec le titulaire du lieu de contenu. J'ai une page de contenu qui utilise la page principale. Dans toute la page de mon contenu, je dois me concentrer par défaut sur la zone de texte afin que l'utilisateur puisse saisir directement une zone de texte en déplaçant la souris sur la zone de texte. Dans une page, il n'y a pas de boîte de texte afin que i endot nnet garde la mise au point par défaut là-bas

Y at-il une façon de le faire dans ma page principale une fois et je peux la réutiliser dans toute ma page de contenu

Je vous remercie

Essayez d'utiliser ceci …

((TextBox)Master.FindControl("txtRequiredFocus")).Focus(); 

Inaccessible approche JavaScript pour sélectionner le premier champ de saisie valide sur une page:

 function SelectFirstInput() { var bFound = false; for (f = 0; f < document.forms.length; f++) { // for each element in each form for (i = 0; i < document.forms[f].length; i++) { // if it's not a hidden element if (document.forms[f][i].type != "hidden") { // and it's not disabled if (document.forms[f][i].disabled != true) { // set the focus to it document.forms[f][i].focus(); var bFound = true; } } // if found in this element, stop looking if (bFound == true) break; } // if found in this form, stop looking if (bFound == true) break; } } 

Vous pouvez l'inclure dans l'événement de chargement de votre page principale:

 // if the ID is constant you can use this: /*TextBox textBox = (TextBox)Page.Controls[0] .FindControl("ContentPlaceHolder1") .FindControl("myTextBox"); */ // this will look for the 1st textbox without hardcoding the ID TextBox textBox = (TextBox)Page.Controls[0] .FindControl("ContentPlaceHolder1") .Controls.OfType<TextBox>() .FirstOrDefault(); if (textBox != null) { textBox.Focus(); } 

Cela correspondrait à une page de contenu portant le balisage suivant:

 <asp:Content ID="Content" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> <asp:TextBox ID="myTextBox" runat="server" /> </asp:Content> 

EDIT: si LINQ n'est pas une option, alors vous pouvez l'utiliser à la place:

 foreach (Control control in Page.Controls[0].FindControl("ContentPlaceHolder1").Controls) { if (control is TextBox) { ((TextBox)control).Focus(); break; } } 
 <script language="javascript" type="text/javascript" > window.onload=function(){ var t= document.getElementById('<%=TextBox1.clientID %>'); t.focus(); } </script> 

Si vous utilisez jQuery, une solution possible est:

  1. Indiquez la zone de texte que vous souhaitez définir la mise au point sur une classe spéciale. "Focus" fonctionne bien à cette fin.

  2. Écrivez un code tel que le suivant dans votre page principale ou inclus par votre page principale dans un fichier de script js:

     $(document).ready ( function() { //get an array of DOM elements matching the input.focus selector var focusElements = $("input.focus").get(); //if a focus element exists if(focusElements.length > 0) { focusElements[0].focus(); } } ); 

Une approche similaire à l'aide de JavaScript vanille serait de marquer la zone de texte avec un attribut spécial. Utilisons le focus.

 window.onload = function() { //get all input elements var inputElements = document.getElementsByTagName("input"); var elementToFocus = null; for(var i = 0; i < inputElements.length; ++i) { var focusAttribute = inputElements[i].getAttribute("focus"); if(focusAttribute) { elementToFocus = inputElements[i]; break; } } if(elementToFocus) { elementToFocus.focus(); } };