2013-07-31 1 views
2

전화 번호 입력을위한 웹 사용자 정의 컨트롤을 만들었습니다.이 컨트롤에는 영역 코드, 숫자 및 확장자에 대한 3 개의 텍스트 상자가 있습니다. 텍스트 상자는 위치 지정을 위해 테이블에 있으며 테이블은 스팬 안에 있습니다. 내가 가지고있는 컨트롤을 사용하는 페이지에서 <asp:Label ID="Label6" runat="server" AssociatedControlID="uxPhoneNumber">Phone</asp:Label>웹 사용자 컨트롤에서 자식으로 포커스 설정

관련 레이블을 클릭 할 때 지역 코드 입력에 포커스를 설정하고 싶습니다. 레이블을 클릭 할 때 웹 사용자 정의 컨트롤에 포커스가 있습니까? 아니면이 ascx에서 html을 변경할 수 있습니까? 태그에 onfocus()을 추가하려고 시도 했으므로 <table> 태그를 사용하므로 포커스를 설정하는 데 자바 스크립트를 사용할 수 있지만 이벤트는 발생하지 않습니다. 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

span을 클릭하면 onclick 이벤트가 발생하므로 작동하지만 페이지의 관련 레이블을 클릭 할 때 발생하지는 않습니다. – jac

+0

@jac - 클릭 이벤트도 라벨에 첨부 했습니까? –

+0

아니요, 레이블을 클릭하고 다른 컨트롤과 연결된 AssociatedControlID 특성이있는 경우 브라우저 동작에 의존합니다. – jac

0

귀하의 setInitialFocus() 기능은 다음과 비슷한 모습이 될 것

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

이것은 초점을 취할 수있는 uxAreaCode 객체와 힘을 찾습니다.