2011-06-10 4 views
1

어떤 이유로 든 내 setfocus() 이벤트가 내 웹 ap의 서버 측에서 작동하지 않으므로 onload에서 트리거하도록 설정된 javascript 함수 setfocus를 만들었습니다 body 태그의 이벤트입니다.javacript .focus()가 탭과 함께 작동하지 않습니다

<body onload="SetFocus()"> 

사용자가 드롭 다운을 사용할 수있는 라디오 버튼을 클릭합니다. 텍스트 상자를 사용할 수있는 드롭 다운에서 선택합니다. 텍스트 상자에 바코드를 스캔하면 자동으로 필드 밖으로 빠져 나와 성공적인 SQL 삽입이 완료되면 onwrite 이벤트를 트리거하여 서버 측 코드를 호출하여 gridview에 새 행을 삽입합니다. 포커스를 자바 스크립트를 통해 텍스트 상자에 자동으로 다시 설정합니다. 일단 그 gridview 개체 헤더 및 데이터 행 이상을 가지고, 나는 아래의 드롭 다운 및 라디오 버튼 목록을 비활성화, 그래서 당신이 아래 자바 스크립트를 보면, 나는 더 이상 내 if 문에서 기준으로 사용할 수 없습니다.

자바 스크립트 :이 완벽하게 작동

var MatAllRB = document.getElementById("HF_RB_MatAll").value; 
var MatAllCL = document.getElementById("DD_SelectCL_All").value; 
var MatAll = document.getElementById("Txt_MatBC_All"); 
var MatAllPrompt = document.getElementById("HF_AllPrompt").value; 
var count = $("#GV_Scan_All tr").children().length; 

: 실제로 필드를 클릭하면

else if (ActiveTab == "cont-3" && MatAllRB != "" && MatAllCL != "") 
    { alert("went into setfocus"); 
     document.getElementById("Txt_MatBC_All").focus(); 
     alert("made it through setfocus"); 
    } 

이 유일한 작품, 탭이 작동하지 않습니다. 그냥 내가 여기에있는 이러한 경고가 모두 올바르게 표시 것으로, 그것은 포커스를 설정하지 단지 결코이 위

else if (ActiveTab == "cont-3" && (MatAllPrompt == "RP" || MatAllPrompt == "P03")) 
    { alert("went into setfocus"); 
     document.getElementById("Txt_MatBC_All").focus(); 
     alert("made it through setfocus"); 
    } 

이상한 것은 같은 일을 아무에게

else if (ActiveTab == "cont-3" && count == 9) 
    { alert("went into setfocus"); 
     document.getElementById("Txt_MatBC_All").focus(); 
     alert("made it through setfocus"); 
    } 

하지 않습니다. 나는 아직도이 물건에 꽤 새롭다, 어쩌면 나는 뭔가를 놓치고있다. 그러나 focus()가 tab off가 아닌 click off에서 작동하는 이유를 알 수 없다. 어떤 도움을 주시면 감사하겠습니다. 나는 텍스트 상자는 다음과 같습니다 소스 볼 때

가 여기에 HTML

<asp:RadioButtonList runat="server" ID="RB_Mat_All" AutoPostBack="true" RepeatColumns="4" OnSelectedIndexChanged="RB_Mat_All_OnSelectedIndexChange"> 
    <asp:ListItem Text="NC" value="NC"></asp:ListItem> 
    <asp:ListItem Text="DA" value="DA"></asp:ListItem> 
    <asp:ListItem Text="GW" value="GW"></asp:ListItem> 
    <asp:ListItem Text="PC" value="PC"></asp:ListItem> 
</asp:RadioButtonList> 
<asp:HiddenField runat="server" ID="HF_RB_MatAll"></asp:HiddenField > 
<br /> 
<asp:DropDownList runat="server" ID="DD_SelectCL_All" AutoPostBack="true" OnSelectedIndexChanged="DD_SelectCL_All_OnSelectedIndexChange"> 
    <asp:ListItem Value="" Text="Select..."></asp:ListItem> 
    <asp:ListItem value="53" text="05"></asp:ListItem> 
    <asp:ListItem value="54" text="06"></asp:ListItem> 
    <asp:ListItem value="55" text="07"></asp:ListItem> 
    <asp:ListItem value="57" text="08"></asp:ListItem> 
    <asp:ListItem value="58" text="09"></asp:ListItem> 
</asp:DropDownList> 
<asp:label runat="server" ID="Lbl_All_Prompt" CssClass="Form" Text=""></asp:label> 
<asp:HiddenField runat="server" ID="HF_AllPrompt"></asp:HiddenField > 
<asp:TextBox runat="server" ID="Txt_MatBC_All" Cssclass="Form" Text="" AutoPostBack="true" OnTextChanged="Txt_MatBC_All_TextChanged"></asp:TextBox> 
<asp:GridView runat="server" ID="GV_Scan_All" CssClass="Form_Feedback"></asp:GridView> 

의 : 텍스트 상자의

<input name="Txt_MatBC_All" type="text" onchange="javascript:setTimeout(&#39;__doPostBack(\&#39;Txt_MatBC_All\&#39;,\&#39;\&#39;)&#39;, 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id="Txt_MatBC_All" class="Form" /> 
+0

시도한 모든 브라우저에서 동작이 동일합니까? – Louis

+0

나는 그저 시도 했었지만, 우리가 여기에서 사용할 수있는 유일한 브라우저입니다. 바보 같았습니다. – Beckyjoon

답변

1

필드를 클릭하면 작동하지만 작동하지만 탭하지 않는 것은 이상합니다. 페이지의 입력에 tabIndexes를 추가하십시오.

+1

예, 이것은 완전히 작동했습니다 ... 여전히 이상하게 여겨야했습니다. 도와 줘서 고마워! – Beckyjoon

0

ID를, 변경 asp.net 렌더링 할 때 그 페이지. ID를 동적으로 가져 와서 작동하는지 확인하십시오.

document.getElementById("<%=Txt_MatBC_All.ClientID%>").focus(); 

같은 방법으로 당신은 당신이 사용하는 모든 에서 getElementByIdClientID를 사용해야합니다.

그런데 모든 줄에 동일한 텍스트 컨트롤 (Txt_MatBC_All)을 집중시킵니다. 이 경우, 왜 모든 것을 만들면, 한 줄만 사용하십시오.

  • 팁 1 : 당신의에서 getElementById는 alert(document.getElementById("<%=Txt_MatBC_All.ClientID%>")); 같은 경고 전화를 teamporary 할에 의한 제어를 발견하는 경우를 알 수 있습니다
  • 팁 2 : 오른쪽 브라우저를 클릭하고 페이지의 소스 코드를 볼 수 귀하가 실제로 사용하고있는 javascript와 맞는지, 실제로 맞는지 확인하기 위해 귀하의 컨트롤에 필요한 ID를 확인하십시오.
+0

팁 주셔서 감사합니다. 소스 코드의 ID가 정확합니다. 위에서 제안한 코드를 사용하여 시도했지만 다른 것을 수행하지 않았습니다. 필자는 동일한 컨트롤에 초점을 맞춘 코드를 분리하여 코드를 단순화했습니다. 코드에서는 모두 한 줄로 구성됩니다. – Beckyjoon

0

자바 스크립트를 대괄호 표기법으로 변환 해보세요. 예를 들면 다음과 같습니다. document.forms[0].Txt_MatBC_All.focus();

관련 문제