[英]ASP.NET OnTextChanged Event Not Responding Instantly
它正在工作但它没有立即响应。 当我点击某个地方时,它正在工作。
我也试过onkeyPress
技术:
<asp:TextBox ID="txtWriter" runat="server" onkeyPress="txtOnKeyPress" ></asp:TextBox>
但我收到的消息如下:
属性'onkeyPress'不是元素'TextBox'的有效属性。
哪个版本的ASP.NET? 以下当然对我有用* :
<script>
function txtOnKeyPress() {
console.log("txtOnKeyPress");
}
</script>
<asp:TextBox ID="txtWriter" runat="server" onkeypress="txtOnKeyPress()" />
*虽然,我对函数名称添加了()
。
无论如何,如果ASP.NET有该属性名称的问题,您可以简单地在客户端附加一个处理程序。 根据您的需要, input
事件可能更有意义。 这是一种实时change
事件,在编辑输入值时会触发(通过按键,剪切,粘贴等)。 这是一个示例:
document.querySelector("input").addEventListener("input", function(e) { console.log("value: %o", this.value); });
<input autofocus placeholder="type here"></input>
注意浏览器的兼容性这里 。
现在,前一个示例在输入值的每一次更改时触发...这可能非常有点,即: 4次简单输入,“test”。 由于您(可能)喜欢它来触发您的服务器端代码,因此我们希望在实际发布表单之前等待快速连续的任何更改:
function __doPostBack(name, argument) { // dummy version of ASP.NET's __doPostBack console.log("value: %o", document.getElementsByName(name)[0].value); } var t; // handle for our timeout document.querySelector("input").addEventListener("input", function(e) { // input received... cancel the previous timeout, if any clearTimeout(t); // wait 1000 milliseconds (1 second) for more input before posting t = setTimeout(__doPostBack, 1000, this.name); });
<input autofocus placeholder="type here" name="test-input"></input>
另见: window. setTimeout()
window. setTimeout()
, document. querySelector()
document. querySelector()
, document. getElementsByName
document. getElementsByName
和EventTarget. addEventListener()
EventTarget. addEventListener()
。
在你的代码背后:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack && Request.Form["__EVENTTARGET"] == txtWriter.UniqueID) {
GridView1.DataSource = /* some data source */;
GridView1.DataBind();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.