它正在工作,但没有立即响应。当我点击某处时,它正在工作。
我还尝试了 onkeyPress
技术:
<asp:TextBox ID="txtWriter" runat="server" onkeyPress="txtOnKeyPress" ></asp:TextBox>
但是我收到了这样一条消息:
Attribute 'onkeyPress' is not a valid attribute of element 'TextBox'.
最佳答案
哪个版本的 ASP.NET?以下肯定对我有用*:
<script>
function txtOnKeyPress() {
console.log("txtOnKeyPress");
}
</script>
<asp:TextBox ID="txtWriter" runat="server" onkeypress="txtOnKeyPress<b>()</b>" />
*不过,我确实添加了()
到函数名称。
无论如何,如果 ASP.NET 对该属性名称有问题,您可以简单地在客户端附加一个处理程序。根据您的需要, input
事件可能更有意义。有点像现场 change
编辑输入值时触发的事件(通过击键、剪切、粘贴等)。这是一个示例:
document.querySelector("input").addEventListener("input", function(e) {
console.log("value: %o", this.value);
});
<input autofocus placeholder="type here"></input>
注意浏览器兼容性here .
现在,前面的示例会随着输入值的每次更改而触发……这可能会相当长,即: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.<a href="https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setTimeout" rel="noreferrer noopener nofollow">setTimeout()</a>
, document.<a href="https://developer.mozilla.org/en-US/docs/Web/API/document.querySelector" rel="noreferrer noopener nofollow">querySelector()</a>
, document.<a href="https://developer.mozilla.org/en-US/docs/Web/API/document.getElementsByName" rel="noreferrer noopener nofollow">getElementsByName</a>
, 和 EventTarget.<a href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener" rel="noreferrer noopener nofollow">addEventListener()</a>
.
在你后面的代码中:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack && Request.Form["__EVENTTARGET"] == txtWriter.UniqueID) {
GridView1.DataSource = /* some data source */;
GridView1.DataBind();
}
}
关于javascript - ASP.NET OnTextChanged 事件没有立即响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28305306/