2014-02-20 47 views
0

我有一个文本框(textBox1),当用户点击当前页面时我不需要焦点。问题是,我不能集中另一个控制器上,because the textbox is the only control that allows input.仅当可编辑控件时从文本框中移除焦点

我有几个隐藏字段,但专注于他们不会从文本框(hidden1.Focus())移除焦点。

我看到某处可以禁用并启用控制器,但那也不起作用。

想法?

编辑

这里是控制我有:

<asp:TextBox ID="TextBox1" runat="server" autocomplete="off"></asp:TextBox> 
<asp:Label ID="lblHide" runat="server"></asp:Label> 
<input type="hidden" id="hidden1" runat="server" value="false"/> 

//C# code 
protected void Page_Load(object sender, System.EventArgs e) 
{  
    TextBox1.TabIndex = -1; 
    lblHide.Focus(); 
} 
+0

你是什么意思,“控制器“?你的意思是,“控制”? –

回答

0

设置文本框:

tabindex = -1 

tabstop = false 

以上内容取决于您使用的控件的类型,无论是asp控件还是html控件。 然后添加如下标签:

<label id="lblHide" name="lblHide" hidden="hidden"> 

然后将焦点设置为该标签。

UPDATE

所以,这里是它的将是什么样子的你:

<asp:TextBox ID="TextBox1" runat="server" TabIndex="-1" ReadOnly="True"></asp:TextBox> 
<asp:Label ID="Label1" runat="server"></asp:Label> 

,然后在页面加载此:

protected void Page_Load(object sender, EventArgs e) 
{ 
Label1.Focus(); 
} 
+0

我添加了一个编辑。显然,webcontrol没有tabstop属性。我在我的问题中添加了编辑以显示代码。 –

+0

更新以反映它应该如何显示。如果用户点击该框,焦点将返回到文本框。 – James

+0

你有一个选择,就是用标签替换文本框。这将消除所有的焦点。只需在文本框中填入任何内容,然后填入标签即可。另外,你可以让它看起来就像一个文本框。例如''等 – James

0

有几个方法可以做到这一点,但我跟着你已经拥有...首先确保您的TextBox控件将其TabStop属性设置为False。然后你的隐藏控件,你可能想将您的主Textbox控制的GotFocus()事件在这段代码...

hidden1.SelectText(); 
+0

我试着添加'hidden1.Select()'到我的隐藏字段,并且我得到一个错误,说没有这样的方法存在。我添加了我在问题中使用的控件。 –

+0

哦,对不起,我以为这是在WinForms上。我只注意到了标签WebForms。你刚加了吗?反正...我编辑的代码,尝试它:) –

相关问题