Javascript/Jquery简单用户体验函数
我开始为我的网站编写一些javascript来创建更好的用户体验,但我对到底发生了什么感到有点困惑,也许其他人很清楚我做错了什么或遗漏了什么。我有两个javascript函数,在第一次使用后,如果您使用缓慢(有时它会跳过下一项,如果您按下两个键太快,则不会选择任何内容),它们工作得非常完美。我觉得我缺少某种$(document).ready(function(){});实现,以确保每个流程在继续之前都已完成。我有两个文本框,用户输入两个数字,然后转到下一个选项卡元素(下一个文本框)。如果有任何影响,文本框也位于asp.net更新面板中Javascript/Jquery简单用户体验函数,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我开始为我的网站编写一些javascript来创建更好的用户体验,但我对到底发生了什么感到有点困惑,也许其他人很清楚我做错了什么或遗漏了什么。我有两个javascript函数,在第一次使用后,如果您使用缓慢(有时它会跳过下一项,如果您按下两个键太快,则不会选择任何内容),它们工作得非常完美。我觉得我缺少某种$(document).ready(function(){});实现,以确保每个流程在继续之前都已完成。我有两个文本框,用户输入两个数字,然后转到下一个选项卡元素(下一个文本框)。如果有任何影
function selectall(item) {
$(item).focus().select();
};
function selectNext(textBox) {
if ($(textBox).val().length == 2) {
$(textBox).next().focus().select();
}
};
<asp:TextBox ID="Text1" runat="server" Width="30px" AutoPostBack="True" onkeyup="selectNext(this);" onclick="selectall(this);"
Height="20px"></asp:TextBox>:
<asp:TextBox ID="Text2" runat="server" Width="30px" AutoPostBack="True" onkeyup="selectNext(this);" onclick="selectall(this);"
Height="20px"></asp:TextBox>
<asp:DropDownList ID="Text2" runat="server"
功能选择全部(项目){
$(项).focus().select();
};
功能选择下一步(文本框){
if($(textBox).val().length==2){
$(文本框).next().focus().select();
}
};
:
为什么需要在UpdatePanel中包含文本框
您在文本框上设置的自动回发可能会导致jQuery出现问题,因为每当文本框控件失去焦点时,就会发生页面回发
我会将您的文本框从UpdatePanel中取出,删除AutoPostback并将您的JavaScript放在文档中。ready
编辑
代码段:
$(document).ready(function() {
$("#fname").keyup(function() {
selectNext($(this));
});
$("#fname").focus(function() {
$(this).select();
});
$("#lname").keyup(function() {
selectNext($(this));
});
$("#lname").click(function() {
$(this).select();
});
});
function selectNext(textBox) {
if (textBox.val().length == 2) {
setTimeout(function() {
textBox.next().focus().select();
}, 5);
}
}
这些文本框位于更新面板中,因为它是jquery对话框弹出的一部分,用于一些用户输入,这些用户输入需要发回服务器,以便在为用户加载之前在c#函数中填充一些数据。因此,这些文本框也以两个数字开头。感谢您指出我使用的自动回邮功能,这确实解决了第一次使用时无法使用的问题,但如果您仍然将钥匙提得很快,它将跳过下一个文本框。我还应该提到我使用.blockui功能锁定页面,直到他们响应此对话框弹出div并单击提交或取消。当我放入$(document).ready(function(){})时;关于我的函数,谷歌控制台说它找不到这些脚本函数。我相信这个跳过问题与onkeyup事件有关,因为它可能会在你完全释放密钥之前切换到下一个框?是否触发下一个文本框向上键事件?所以,不知何故,这两个文本框的按键事件是相同的?这是我最好的guess@Mootz,这是你想要的东西吗?我创建了一个快速的JSFIDLE。我想感谢您花时间尝试为我找到解决方案。我已经玩了很多次了,看来你的小提琴和我的js有同样的问题。如果您尝试在第一个框中尽可能快地按两个数字,它将完全跳过中间框并转到下拉列表,这正是我遇到的问题。我不认为这有什么大不了的,但是像这样的细节让我非常烦恼。哈哈