0

我在这里有点困惑。问题是我有一个 asp.net 文本框,当 maxlength 为 true 并且用户没有按下某些键时,我想将其切换到下一个文本框。我的 asp.net 代码是这样的:

<asp:TextBox ID="txbTransferBanknumber" Style="width: 50px;" MaxLength="4" 
Visible="true" runat="server" autocomplete="off"    onkeyup="autoTabNextTextBox(this,'txbTransferLedger')" CssClass="AutoTabFill" />

我的 autoTabNextTextBox 函数如下所示:

function autoTabNextTextBox(sender, nextTextBox) {

    var keyCode = (event.which) ? event.which : event.keyCode
    var mylength = $(sender).val().length;
    var maxlength = $(sender).attr('maxLength');

    if((keyCode != 37) && (keyCode != 39))
    {
        if ((keyCode != 8) && (keyCode != 16))
        {
            if (mylength == maxlength)
            {   
                $('.nextTextBox').focus();
                //nextTextBox.focus();                    
            }
        }
    }

}

如何将参数 nextTextBox 传递给 .focus() ?

4

1 回答 1

1

假设您有一个静态的ClientIdMode(意味着输出 HTML 元素的 id 是txbTransferLedger),那么您只需将 nextTextBox参数作为选择器的一部分包含(而不是您当前使用的字符串): nextTextBox

$('#' + nextTextBox).focus();

更新:如果您不能使用静态的 ClientIdMode 并且因此无法完全控制输入元素的生成 id,那么另一种选择是使用类选择器。给每个输入元素一个唯一的类名(这可以是您正在使用的任何现有类的补充),例如:

<asp:TextBox ID="txbTransferLedger" CssClass="AutoFill TransferLedger" />

然后将所需的类名(TransferLedger在本例中)传递给autoTabNextTextBox函数而不是 ID。然后,您可以使用类选择器,如下所示:

$('input.' + nextTextBox).focus(); // e.g. $('input.TransferLedger').focus();
于 2012-10-29T10:42:49.893 回答