2009-09-10 13 views
1

J'ai une page maître avec un espace réservé pour le contenu. J'ai contentpage qui utilise la page maître. Dans toute ma page de contenu je dois par défaut se concentrer sur la zone de texte afin que l'utilisateur puisse taper directement dans la zone de texte au lieu de déplacer la souris sur la zone de texte. dans une page, il n'y a pas zone de texte afin que je donnot nnet garder le focus par défaut là-basComment faire la mise au point par défaut dans la page de contenu à partir de la page maître

Est-il possible que je peux le faire dans ma page principale une fois et peut la réutiliser dans toute ma page de contenu

merci

Répondre

0

Si vous utilisez jQuery, une solution possible est:

  1. Donnez la zone de texte que vous souhaitez définir le focus à une classe spéciale. "focus" fonctionne bien à cet effet.

  2. Ecrire un code tel que ce qui suit dans votre page principale ou inclus par votre page maître dans un fichier 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 en utilisant 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(); 
    } 
}; 
1
<script language="javascript" type="text/javascript" > 


window.onload=function(){ 
var t= document.getElementById('<%=TextBox1.clientID %>'); 
t.focus(); 
} 


</script> 
3

essayer d'utiliser cette ...

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

approche indiscriminée JavaScript afin de sélectionner le premier champ d'entrée 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; 
    } 
} 
+2

Il me brûle les yeux! – womp

+0

Ouais ... C'est moche ... mais ça marche bien dans tous les navigateurs. Un client a récemment demandé cette fonctionnalité et je ne voulais pas ajouter jquery à l'intégralité de son site - donc j'ai trouvé cet extrait pour lui :) –

2

Vous pouvez inclure dans votre événement de chargement de la page maître:

// 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 avec une page de contenu qui a 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 que vous pouvez ensuite utiliser cette place:

foreach (Control control in Page.Controls[0].FindControl("ContentPlaceHolder1").Controls) 
{ 
    if (control is TextBox) 
    { 
     ((TextBox)control).Focus(); 
     break; 
    } 
} 
+0

mais dans la page l'ID du contrôle textbox est différent page1: comme txtusername page2: as txtemployeeid – happysmile

+0

donc je ne peux pas dire dans javscript utiliser ce contrôle comme focus par défaut sur toute la page – happysmile

+0

@ prince23: J'ai mis à jour le code de sorte que l'ID n'a plus d'importance. @David Andres et @Nathan Taylor ont posté des approches Javascript. –

Questions connexes