电话号码TextBox问题

时间:2012-04-24 11:21:40

标签: javascript jquery asp.net

我有三个Textboxes电话号码。 Textbox1 max length is 32nd's max length is 33rd max length is 4。当用户在three digitsTextBox1 cursor moves时自动TextBox2 TextBox2同样的事情发生在keyup以及TextBox3上。我在Textbox3事件中处理此功能。

enter image description here

问题是,当我按下

Ctl + a

Ctl + c

Ctl + v

光标自动移动到Textbox,因为Max Length到达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(); } } 上。任何想法?

我的代码如下。

{{1}}

2 个答案:

答案 0 :(得分:4)

我建议检查是否使用了被按下的控制键see this post,以获取有关如何操作的更多信息。如果您检测到按下了CTRL键,则不要移动到下一个文本框。

或者,如果您只希望“移动到下一个”功能在用户键入第3个字符时起作用,那么可能需要检查keydown上的字符数。确保在第3个字符和前一个按键中按下此新键是第二个字符(即在某处存储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(w / 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键。

See here for a working example

答案 1 :(得分:0)

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