2016-07-29 58 views
0

我有一个GridView中有一个TemplateField,其中有一个TextBox。我发现代码允许用户按下Enter键,然后转到Grid中的下一个TextBox,就像Tab键一样。唯一的问题是它跳过下一个TextBox并在此之后进入TextBox。这很奇怪,每次按下回车就跳过一个TextBox。我不太了解Javascript来修复它。有人可以看看我的代码吗?在GridView的TemplateField文本框输入键执行像选项卡

我的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

相关问题