繁体   English   中英

ASP.NET OnTextChanged事件无法立即响应

[英]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. getElementsByNameEventTarget. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM