我有一个“自助结帐”页面,客户在“欢迎”页面中扫描条形码后,然后重定向到“确认”页面。
我一直在使用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即可重定向到“确认”页面,但实际结果是我必须在页面中的任何位置单击。
答案 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秒后,该表单就会发布到您的代码后面。