Доступ к ClientID элемента управления в другом TD

Я пытаюсь получить доступ к ClientID элемента управления в одном из вызова javascript (используя jquery) в элементе управления в другом, чтобы выполнить некоторые эффекты показа и скрытия на стороне клиента. Вот основная структура:

<td>
  <asp:LinkButton OnClientClick="DoStuff" runat="server">
</td>
<td>
  <asp:TextBox ID="blah" runat="server">
</td>

В скриптах:

function DoStuff() {
  $("#<%= blah.ClientID %>").hide();
}

Проблема у меня в том, что функция ничего не делает. Он отлично работает, скрывая объекты в одном и том же TD, но здесь, похоже, не удается найти элемент управления.

2 ответа

Решение

Если вы имеете в виду непосредственно элемент управления на стороне сервера, ClientID должен включать любую информацию NamingContainer (из чего-то вроде GridView или Repeater). Узнайте, какой идентификатор клиента элемента управления использует инструменты разработчика вашего браузера (в IE есть Developer Tools, Firebug for Firefox и т. Д.), Затем отладьте JavaScript (с помощью того же инструмента) и выполните $("#theidyoujustfound") в консоли JavaScript и посмотрите, что вы в итоге.

Похоже, что в вашей DoStuff() Способ; ты захочешь $("#<%= blah.ClientID %>").hide();, И я не уверен, что это необходимо, но не мешало бы включить скобки для функции OnClientClient:

<asp:LinkButton OnClientClick="DoStuff()" runat="server">

Чтобы убедиться, что он не может его найти, попробуйте это: alert($("#<%= blah.ClientID %>).length); Если он возвращает число больше нуля, то проблема не в поиске. Строка таблицы в элементе управления похожа на <asp:Repeater /> контроль? Если это так, то вам также необходимо встроить скрипт в шаблон повторителя.

НТН.

Другие вопросы по тегам