【发布时间】:2009-09-09 13:58:06
【问题描述】:
我有一个复合控件,它发出的 HTML 看起来像这样
<span id="myControl">
<select id="myControl_select">
<option value=""></option>
<option value="1">Item 1</option>
<option value="2">Item 2</option>
</select>
</span>
我希望父跨度控件在包含的下拉列表 onchange 事件触发时触发一个事件。由于这是一个复合控件,我必须允许该控件的使用者能够分配事件处理程序(我希望通过一个名为 onvaluechanged 的 html 属性或其他东西)
已编辑以纳入 bobince 的建议。唯一的问题是参数参数没有被传递。它目前是“未定义的”。
<script>
window.onload = function() {
var objSelect = document.getElementById('myControl_select')
if (objSelect.attachEvent)
objSelect.attachEvent("onchange", myControl_ddlOnChange);
else if (objSelect.addEventListener)
objSelect.addEventListener("onchange", myControl_ddlOnChange, false);
}
function myControl_ddlOnChange()
{
//fire span on value changed event
var target= document.getElementById('mycontrol');
var handler= target.getAttribute('onvaluechanged');
var args = { text : 'Hi!', index : 0 }
if (handler)
new Function(handler).call(target, args);
}
function myControl_ValueChanged()
{
alert(arguments[0]);
}
</script>
<span id="myControl" onvaluechanged="myControl_ValueChanged();">
<select id="myControl_select">
<option value=""></option>
<option value="1">Item 1</option>
<option value="2">Item 2</option>
</select>
</span>
【问题讨论】:
-
这是用户控件还是服务器控件?
-
这是一个发出上面 html 标记的服务器控件
标签: asp.net javascript javascript-events html