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

时间:2013-02-01 10:37:30

标签: javascript asp.net

考虑这个简化的例子:

服务器端ASP.NET代码:

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

客户端javascript:

var numberOfChanges;

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

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

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

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

谢谢! / Fredrik

1 个答案:

答案 0 :(得分: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);"
相关问题