Почему я не могу добавить clientId моего textBox в разметку, чтобы найти его с помощью jQuery? - PullRequest
3 голосов
/ 20 июня 2010

Просто я пытаюсь передать идентификатор клиента одного textBox 'txtPersonId' для события click-client, чтобы я мог перейти к этому элементу управления textBox и передать его оболочку jQuery в функцию loadePerson ().

Вот как я делаю это в разметке aspx:

<asp:Button ID="btnSearch" runat="server" Text="ARA" OnClientClick="loadPerson(jQuery('#<%=txtPersonId.ClientID %>'))"/>

Но при рендеринге заполнитель

<%=txtPersonId.ClientID %>

остается без изменений и не заменяетсяс идентификатором клиента визуализированного элемента управления.

Есть идеи, почему это происходит и как мне это преодолеть?

Ответы [ 2 ]

4 голосов
/ 20 июня 2010

Когда у меня возникали подобные проблемы, я прибегал к заключению выражения в квадратные скобки и получению результата в виде строки.Я предполагаю, что это потому, что синтаксический анализатор не распознает синтаксис блока рендеринга, встроенный в свойство string.

 <asp:Button ID="btnSearch" runat="server" Text="ARA"
      OnClientClick='<%= "loadPerson(jQuery(\"#" + txtPersonId.ClientID + "\"))" %>' />

Я давно перешел к тому, чтобы держать мой JavaScript полностью отделенным от разметки, поэтому яможет быть немного нечетким на точных деталях.Если вы хотите отделить ваш javascript от разметки, вы можете добавить обработчик с явной или относительной ссылкой DOM в блоке сценария.Использование селектора «заканчивается с», совпадающего с идентификатором, устраняет необходимость в поиске явного идентификатора, хотя вы также можете это сделать - в приведенном ниже примере показаны оба стиля.

 <script type="text/javascript">
      $(function() {
          $('#' + '<%= btnSearch.ClientID %>').click( function() {
                loadPerson( $('input[id$=txtPersonId]') );
          });
      });
 </script>
0 голосов
/ 20 июня 2010

Я не знаю, что делает ваш LoadPerson, но если вы хотите написать функцию для вашего события click в Jquery, вы можете сделать что-то вроде:

'#' + '<% = txtPersonId.ClientID%> 'для адресации вашего txtbox ID вы можете сделать то же самое для вашей кнопки $ (' # '+' <% = btnSearch.ClientID%> '). click (function () {// click process process});

...