2013-07-31 51 views
2

我为电话号码条目创建了一个Web用户控件,其中包含3个用于区号,数字和扩展名的文本框。文本框位于表格中,用于定位,表格位于范围内。在使用控件的页面中,我有<asp:Label ID="Label6" runat="server" AssociatedControlID="uxPhoneNumber">Phone</asp:Label>将焦点设置为网页用户控件中的子项

我想要做的是将焦点设置为单击相关标签时的区域代码输入。单击标签时Web用户控件是否获得焦点,还是可以更改ascx中的html,这样可以工作?我曾尝试将onfocus()添加到<span>标记和<table>标记,以便我可以使用javascript设置焦点,但事件不会引发。如果我将onfocus()事件移动到它触发的第一个输入并且我的脚本运行

这是完整的ascx代码。

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PhoneNumber.ascx.cs" Inherits="CustomControls.PhoneNumber" %> 
<span id="uxPhoneNumberControl" runat="server" style="display: inline-block;" onfocus="setInitialFocus()"> 
    <asp:Table ID="uxPhoneNumberTable" runat="server"> 
     <asp:TableRow runat="server"> 
      <asp:TableCell runat="server"> 
       <telerik:RadMaskedTextBox ID="uxAreaCode" runat="server" Columns="3" Mask="###" CssClass="span1" Skin="" MaxLength="3"></telerik:RadMaskedTextBox> 
      </asp:TableCell> 
      <asp:TableCell runat="server"> 
       <telerik:RadMaskedTextBox ID="uxPhoneNumber" runat="server" Mask="###-####" Skin="" Columns="10" CssClass="input-mini" MaxLength="8"></telerik:RadMaskedTextBox> 
      </asp:TableCell> 
      <asp:TableCell runat="server"> 
       <asp:Label ID="uxExtensionLabel" runat="server" Text="Ext." AssociatedControlID="uxExtension" CssClass="controls-label"></asp:Label> 
      </asp:TableCell> 
      <asp:TableCell runat="server"> 
       <telerik:RadMaskedTextBox ID="uxExtension" runat="server" Columns="5" Mask="#####" Skin="" CssClass="span1"></telerik:RadMaskedTextBox> 
      </asp:TableCell> 
     </asp:TableRow> 
    </asp:Table> 
    <asp:HiddenField ID="uxPhoneEntity" runat="server" /> 
</span> 

回答

0

尝试连接一个jQuery单击事件的跨度,然后将焦点设置到输入端,这样的:

$(document).ready(function(){ 
    $('#uxPhoneNumberControl').on('click',function(){ 
     $("#InputID").focus(); 
    }); 
}); 

注:我在focus()通话放InputID的总称,因为我无法分辨出您正在使用哪个ID或类别来唯一标识要设置焦点的区域代码输入控件。

+0

当单击跨度时会引发onclick事件,因此可以工作,但在单击页面中的关联标签时不会引发onclick事件。 – jac

+0

@jac - 您是否也将点击事件添加到标签? –

+0

不,我在单击标签时依赖于浏览器行为,并且它与具有“AssociatedControlID”属性的另一个控件相关联。 – jac

0

setInitialFocus()功能应该是这个样子:

function setInitialFocus() 
{ 
    var area = document.getElementById("<%=uxAreaCode.ClientID%>"); 
    area.focus(); 
    return true; 
} 

这将定位uxAreaCode对象,并迫使其采取的焦点。

相关问题