Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/Jquery简单用户体验函数_Javascript_Jquery_Asp.net - Fatal编程技术网

Javascript/Jquery简单用户体验函数

Javascript/Jquery简单用户体验函数,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我开始为我的网站编写一些javascript来创建更好的用户体验,但我对到底发生了什么感到有点困惑,也许其他人很清楚我做错了什么或遗漏了什么。我有两个javascript函数,在第一次使用后,如果您使用缓慢(有时它会跳过下一项,如果您按下两个键太快,则不会选择任何内容),它们工作得非常完美。我觉得我缺少某种$(document).ready(function(){});实现,以确保每个流程在继续之前都已完成。我有两个文本框,用户输入两个数字,然后转到下一个选项卡元素(下一个文本框)。如果有任何影

我开始为我的网站编写一些javascript来创建更好的用户体验,但我对到底发生了什么感到有点困惑,也许其他人很清楚我做错了什么或遗漏了什么。我有两个javascript函数,在第一次使用后,如果您使用缓慢(有时它会跳过下一项,如果您按下两个键太快,则不会选择任何内容),它们工作得非常完美。我觉得我缺少某种$(document).ready(function(){});实现,以确保每个流程在继续之前都已完成。我有两个文本框,用户输入两个数字,然后转到下一个选项卡元素(下一个文本框)。如果有任何影响,文本框也位于asp.net更新面板中

    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有同样的问题。如果您尝试在第一个框中尽可能快地按两个数字,它将完全跳过中间框并转到下拉列表,这正是我遇到的问题。我不认为这有什么大不了的,但是像这样的细节让我非常烦恼。哈哈