2016-07-29 19 views
0

GridViewにTemplateFieldがあり、内部にTextBoxがあります。私は、ユーザーがEnterキーを押して、タブキーと同じようにGridの次のTextBoxに行くことができるコードを見つけました。唯一の問題は、次のTextBoxをスキップして、その後にTextBoxに行くことです。変なことに、Enterを押すたびにTextBoxをスキップします。私はそれを修正するために十分なJavascriptについて知りません。誰かがm yのコードを見ることができますか?GridView TemplateFieldでTextBoxのEnterキーがタブのように機能します

マイJavascriptを:

function tabE(obj, e) { 
    var e = (typeof event != 'undefined') ? window.event : e;// IE : Moz 
    if (e.keyCode == 13) { // 9 for Tab and 13 for enter 
     var ele = document.forms[0].elements; 
     for (var i = 0; i < ele.length; i++) { 
      var q = (i == ele.length - 1) ? 0 : i + 2; 
      if (obj == ele[i]) { 
       //focus TextBox on next row 
       ele[q].focus(); 
       break 
      } 
     } 
     e.returnValue = false; 
     if (typeof event == 'undefined') 
      e.preventDefault(); 
    } 
} 

私のGridViewの

<asp:GridView ID="gvPackRegular" AutoGenerateColumns="false" ShowHeaderWhenEmpty="true" 
                  CssClass="GridView" runat="server" Width="100%"> 
                  <AlternatingRowStyle CssClass="alt" /> 
                  <Columns> 
                   <asp:TemplateField HeaderText="Carton" HeaderStyle-CssClass="GridViewHeader"> 
                    <ItemTemplate> 
                     <asp:Label ID="lblPackName" runat="server" Text='<%# Eval("CartonType.Description") %>'></asp:Label> 
                     <asp:Label ID="lblCartonTypeID" runat="server" Text='<%# Eval("CartonType.CartonTypeId") %>' 
                      Visible="false"></asp:Label> 
                    </ItemTemplate> 
                   </asp:TemplateField> 
                   <asp:TemplateField HeaderText="Quantity" HeaderStyle-CssClass="GridViewHeader"> 
                    <ItemTemplate> 
                     <asp:TextBox ID="txtPackQty" runat="server" Text='<%# Bind("Pack") %>' CssClass="SmallTextbox" 
                      onchange="invalidate();" onfocus="selectTextonFocus(this);" onkeydown="tabE(this,event)"></asp:TextBox> 
                    </ItemTemplate> 
                   </asp:TemplateField> 
                  </Columns> 
                 </asp:GridView> 

答えて

1

問題があるの変更

i+2

var q = (i == ele.length - 1) ? 0 : i + 2; 

var q = (i == ele.length - 1) ? 0 : i + 1; 
+0

ありがとうございました!それは今、完璧に動作します。 – hollyquinn

関連する問題