我有一个用户控件(MyListSelect.ascx),它只有一个单选按钮列表......
<%@ Control Language="C#" %>
<select>
<option disabled selected>Select Options</option>
<option>
option 1
</option>
<option>
option 2
</option>
</select>
我的ASPX页面有:
<%@Register Src="~/MylistSelect.ascx"
TagName="listSelect"
TagPrefix="ListControl" %>
<ListControl:listSelect runat="server" />
这在我的ASPX中显示一个下拉菜单(呜呜);
我希望能够(形成ASPX)根据下拉列表的所选索引更改事件调用javascript函数,因为所选的菜单项在不同页面中具有不同的功能。我没有&#39;想要在ASCX中定义所有可能的功能。
有什么建议吗? lso,为什么<ListControl:listSelect runat="server" />
必须运行服务器?还有办法解决这个问题吗?
答案 0 :(得分:4)
它必须是runat=server
,因为用户控件是服务器端的.net引擎处理的特殊控件。 ASP.NET用户控件在客户端没有任何意义,它需要在发送给客户端之前进行“翻译”。
为了首先响应选定的索引更改事件,您需要为select
分配一个id或css类,以便通过jQuery选择器更准确地识别它(假设您要使用jQuery因为你把它添加到问题标签中。)
这样的事情可以解决问题
<强> HTML 强>
<select id="mySelect">
<option disabled selected>Select Options</option>
<option>
option 1
</option>
<option>
option 2
</option>
</select>
<强> JAVASCRIPT 强>
// Shorthand for $( document ).ready()
$(function() {
$('#mySelect').change(function(){
// your logic when index changed here
});
});
答案 1 :(得分:1)
首先,将您的选择更改为:
<select onchange="yourJSFunction();">
当您在页面内使用控件时,您还将提供yourJSFunction
:
<script type="text/javascript">
function yourJSFunction() {
alert("yourJSFunction 1");
}
</script>
<ListControl:listSelect runat="server" />
在另一页:
<script type="text/javascript">
function yourJSFunction() {
alert("yourJSFunction 2");
}
</script>
<ListControl:listSelect runat="server" />