2

我有三个Textboxes电话号码。Textbox1 max length is 3,2nd's max length is 33rd max length is 4. 当用户自动键入three digitsTextBox1,TextBox3 也会发生同样的事情。我正在处理这个功能。cursor movesTextBox2TextBox2keyup

在此处输入图像描述

问题是,当我按下

Ctl+a

Ctl+c

Ctl+v

光标自动移动到,Textbox3因为Textbox到达它Max Length并导航到 next Textbox。我想保持它TextBox1。有任何想法吗?

我的代码如下。

<asp:TextBox runat="server" ID="tbPh2" MaxLength="3" onkeyup="Mainautotab2(this, 0, event);"/>
<asp:TextBox runat="server" ID="tbPh22" MaxLength="3" onkeyup="Mainautotab2(this, 1, event);"/>
<asp:TextBox runat="server" ID="tbPh222" class="midium" MaxLength="4" />


function Mainautotab2(original, destination, evt) {
         if (document.getElementById('<%= tbPh2.ClientID%>').value.length == 3 && document.getElementById('<%= tbPh22.ClientID%>').value.length == 3) {

         if (destination == 0)
             document.getElementById("<%=tbPh22.ClientID %>").focus();
         if (destination == 1)
             document.getElementById("<%=tbPh222.ClientID %>").focus();
     }
}
4

2 回答 2

4

我建议检查是否使用了被按下的控制键,有关如何执行此操作的更多信息,请参阅这篇文章。如果您检测到按下了 CTRL 键,则不要移动到下一个文本框。

或者,如果您只希望“移动到下一个”功能在用户输入第三个字符时工作,那么可能类似于检查 keydown 上的字符数。确保在第三个字符中的这个新按键和之前的按键是第二个字符(即在某处存储 lastKeyPressCount)


因为我是一个很好的人!这是我自己的一些工作:

html

<input type="text" id="1" maxlength="3" data-nextid="2"/>
<input type="text" id="2" maxlength="3" data-nextid="3"/>
<input type="text" id="3" maxlength="4"/>​

JavaScript(带 JQuery)

$("input").keyup(function(e){
    if(e.ctrlKey || e.which == 17 || e.which == 65 || e.which == 67 || e.which == 86){
        return;        
    }
    if($(this).val().length == $(this).attr("maxlength")){
        var nextid = $(this).data("nextid");
        if(nextid){
              $("#" + nextid).focus();       
        }
    }
});​

请记住,此代码已专门设置为忽略除字母 A、C 和 V 之外的 CTRL 键。

有关工作示例,请参见此处

于 2012-04-24T11:25:21.377 回答
0

不要使用 OnKeyUp 事件。使用文本框的 TextValueChanged 并计算文本框中文本的长度

于 2012-04-24T12:17:27.783 回答