Доступ к ClientID элемента управления в другом TD - PullRequest
2 голосов
/ 25 апреля 2011

Я пытаюсь получить доступ к 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 ]

0 голосов
/ 25 апреля 2011

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

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

<asp:LinkButton OnClientClick="DoStuff()" runat="server">
0 голосов
/ 25 апреля 2011

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

HTH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...