0

考虑这个简化的例子:

服务器端 ASP.NET 代码:

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

客户端javascript:

var numberOfChanges;

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

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

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

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

谢谢!/弗雷德里克

4

1 回答 1

1

利用 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);"
于 2013-02-04T08:03:19.917 回答