如何在文本框填满后几秒钟自动提交表单

时间:2019-05-07 08:08:06

标签: asp.net vb.net webforms

我有一个“自助结帐”页面,客户在“欢迎”页面中扫描条形码后,然后重定向到“确认”页面。

我一直在使用OnTextChanged设置为True的AutoPostBack事件,但是在我尝试填充TextBox后没有任何反应,好像AutoPostBack在我运行后无法正常工作填充了TextBox

这是我的代码:

asp:TextBox runat="server" ID="txtID" CssClass="form-control form-control-lg" AutoPostBack="true" OnTextChanged="txtID_TextChanged"

背后的代码:

Protected Sub txtID_TextChanged(sender As Object, e As EventArgs) Handles txtID.TextChanged
    Dim barc As String = txtID.Text
    Response.Redirect(String.Format("Cart.aspx?barc={0}", barc))
End Sub

我希望在TextBox中填写“欢迎”页面后,无需单击任何鼠标或按Enter即可重定向到“确认”页面,但实际结果是我必须在页面中的任何位置单击。

1 个答案:

答案 0 :(得分:0)

因此,有很多方法可以做到这一点,但是最简单的往往是最好的,所以这里有一些普通的JavaScript:

<form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    </div>
    <script>
        let timer;
        //(2.5 seconds):
        let timeLimit = 2500;  
        let txtTracked = document.getElementById('TextBox1');

        //When the user stops typing, start the countdown
        txtTracked.addEventListener('keyup', () => {
            clearTimeout(timer);
            if (txtTracked.value) timer = setTimeout(typingFinished, timeLimit);
        });

        ////The timer has run out:
        function typingFinished() {
            //do something
            alert("User has finished typing");
            document.getElementById("form1").submit();
        }
    </script>
</form>

以上JavaScript将使用其ID跟踪特定控件(在本例中为TextBox),在用户未键入2.5秒后,该表单就会发布到您的代码后面。