我有三个Textboxes
电话号码。 Textbox1 max length is 3
,2nd's max length is 3
和3rd max length is 4
。当用户在three digits
中TextBox1
cursor moves
时自动TextBox2
TextBox2
同样的事情发生在keyup
以及TextBox3上。我在Textbox3
事件中处理此功能。
问题是,当我按下
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}}
答案 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键。
答案 1 :(得分:0)
不要使用OnKeyUp事件。使用文本框的TextValueChanged并计算文本框中文本的长度