ASP.NET 客户端脚本连接到实例

Connecting ASP.NET client-side scripts to instances

本文关键字:实例 连接 脚本 NET 客户端 ASP      更新时间:2023-09-26

考虑这个简化的例子:

服务器端 ASP.NET 代码:

TextBox theTextBox = ...
theTextBox.Attributes.Add("onchange", "HandleOnChangeEvent");

客户端 JavaScript:

var numberOfChanges;
function HandleOnChangeEvent() {
   numberOfChanges++;
   alert(numberOfChanges);
}

现在,这有效,即每次用户更改文本框中的值时,都会弹出一个对话框,显示自加载页面以来文本框中的值更改的次数。

但是,如果同一页面上有多个 texbox 实例怎么办?OfChanges 的数量是全局的,因此它将跟踪页面上所有文本框的更改总数。我希望它确实是特定于实例的,对于每个单独的文本框。

解决此问题的首选方法是什么?不知道这是否重要,但我应该提到我的真实场景要复杂得多,状态变量比本例中的状态变量更多。

谢谢!/弗雷德里克

利用 JavaScript 的原型特性,并在使用的基础上扩展文本框,如下所示:

function HandleOnChangeEvent(e) {
    // `e` contains the DOM element that was clicked
    if( !e.numberOfChanges ) e.numberOfChanges = 0; // dynamically set the property
    e.numberOfChanges++;
    alert( e.numberOfChanges );
}

您需要将onchange属性更改为以下内容:

onchange="HandleOnChangeEvent(this);"