Существует много сложностей при создании пользовательских сценариев управления с поддержкой сценариев, например, ASP.NET - JQuery
В общем: вам нужно сделать свой контейнер именования сценариев безопасным.Ссылки по идентификатору DOM необходимо сделать для идентификатора клиента ASP.NET (ответ @ FarligOpptredn) или, альтернативно, использовать селекторы CSS (если только создаваемая вами функция не относится к конкретному экземпляру).
В идеале,создайте весь свой клиентский скрипт в JS-файле и зарегистрируйте его из кода, используя ScriptManager
.Это позволяет использовать сценарий повторно и избежать конфликтов между экземплярами UserControl.Поскольку вы не можете использовать скриптлеты (<%= ... %>
) в файле JS, вместо этого используйте параметры для ссылки на объекты в UserControl DOM или используйте селекторы CSS.И используйте this
в событиях вместо жестких ссылок.Пример
myUserControl.js:
$(document).ready(function() {
$('.myUserControl > .chkAll').click(
function() {
$("INPUT[type='checkbox']").attr('checked', $(this).is(':checked'));
});
});
myUserControl.ascx:
<div class="myUserControl">
<asp:CheckBox ID="chkAll" class="chkAll" runat="server" Text="Check All" /><br />
<asp:CheckBoxList ID="cbList" runat="server">
</asp:CheckBoxList>
</div>
Это также облегчит чтение и отладку вашего скрипта по сравнению со встроенным скриптом смного побега.