【发布时间】:2010-08-24 17:27:40
【问题描述】:
感谢您的关注。
目前我正在实现来自this 示例的代码。在我的 aspx 文件中,我定义了 Label1 和 Textbox1。在我的 aspx.cs 文件中,我在 Page_Load 方法中将 Label1.Text 属性设置为随机字符串。
在我包含的 .js 文件中,我有:
var Label1, TextBox1;
Sys.Application.add_init(AppInit);
function AppInit(sender) {
Label1 = $get('Label1');
TextBox1 = $get('TextBox1');
$addHandler(Label1, "click", Label1_Click);
$addHandler(TextBox1, "blur", TextBox1_Blur);
$addHandler(TextBox1, "keydown", TextBox1_KeyDown);
}
现在,我想添加更多标签(和相应的文本框),但我不希望为每个附加事件定义单独的处理程序的开销,即我想避免这种情况:
$addHandler(Label1, "click", Label1_Click);
$addHandler(TextBox1, "blur", TextBox1_Blur);
$addHandler(TextBox1, "keydown", TextBox1_KeyDown);
$addHandler(Label2, "click", Label2_Click);
$addHandler(TextBox2, "blur", TextBox2_Blur);
$addHandler(TextBox2, "keydown", TextBox2_KeyDown);
...
如何将参数传递给将准确识别发件人的处理程序,并让处理程序使用“this”或其他内容。另外值得注意的是,我希望能够识别标签 (1,2,3...) 的索引,因为我还必须编辑相应的文本框。例如,Label1_Click 的当前实现如下所示:
function Label1_Click() {
TextBox1.value = Label1.innerHTML;
Label1.style.display = 'none';
TextBox1.style.display = '';
TextBox1.focus();
TextBox1.select();
}
谢谢你们。
【问题讨论】:
-
仅供参考 - 看起来您正在使用 Microsoft 的客户端库。根据 MS 的说法,他们正在将客户端开发工作转向 jQuery (stephenwalther.com/blog/archive/2010/03/16/…)。虽然您尝试做的事情会奏效,但我建议您试一试 jQuery,除非您正在开发服务器控件。
标签: javascript asp.net textbox label addhandler