Селектор jQuery не может найти мой элемент по идентификатору - PullRequest
1 голос
/ 11 января 2012

Я все еще довольно новичок в jQuery! Тестирование на моем старом сайте, чтобы проверить его функционирование. Я даже не могу запустить простой скрипт jQuery, и это ужасно смущает. Пожалуйста, помогите, ребята!

По какой-то причине я не могу заставить селектор jQuery найти элемент по id. Вот код

 $(document).ready(function () {
        if (jQuery) {
            alert("jQuery working");
        } else {
            alert("jQuery not working");
        }

        $('#TextBox4').keyup(function () {
            alert("KEYUP FUNCTION WORKENGGG");
            var password = jQuery('#TextBox3').val();
            var cfmPassword = jQuery('#TextBox4').val();
            check_password_match(password, cfmPassword);
        });
    });

А это мой ASP HTML-код.

<asp:TextBox ID="TextBox4" runat="server" BackColor="#181818" ForeColor="White" 
                        TextMode="Password" ToolTip="Password">Password</asp:TextBox>`

<asp:TextBox ID="TextBox3" runat="server" BackColor="#181818" ForeColor="White" 
                        TextMode="Password" ToolTip="Password" Height="22px">Password</asp:TextBox>`

Ответы [ 3 ]

3 голосов
/ 11 января 2012

Попробуйте это: $('#<%=TextBox4.ClientID %>')

На стороне клиента элементы управления asp.net имеют идентификатор, отличный от того, который вы указали на странице aspx.

1 голос
/ 11 января 2012

Идентификатор элемента HTML не будет совпадать с идентификатором элемента управления ASP. Причиной этого является то, что элементы управления ASP.NET могут именовать элементы управления, которые действуют как пространство имен идентификатора, позволяя нескольким элементам управления иметь одинаковый идентификатор, но разные идентификаторы клиента. Конечным результатом является то, что ClientID - это то, что вы должны искать в JQuery. То есть $('#<%# TextBox4.ClientID %>') вернет элемент JQuery, который вы пытаетесь получить.

0 голосов
/ 11 января 2012

Я считаю, что самый простой способ быстро проверить, находит ли jQuery ваш элемент, это использовать что-то вроде:

$("#TextBox4").css("border","solid 1px red");

Таким образом, когда ваша страница загружается, данный элемент должен быть выделен красным цветом. Затем вы можете продолжить работу с реальным кодом, зная, что селектор работает.

Предполагая, что ваши оповещения выше всплыли и у вас правильно установлен jQuery, я бы посоветовал вам проверить ваш фактический источник. То есть перейдите к рассматриваемой странице и посмотрите, как отображается фактический HTML.

Поскольку вы, похоже, используете теги asp (какой-то вариант Microsoft .NET, я полагаю?), Понимаете, что к моменту рендеринга страницы фактические HTML-теги в выводе выглядят очень отличающимися от строк, которые вы кодируете , Посмотрите на исходный вид и проверьте, что текстовое поле на самом деле отображает. Вы, вероятно, обнаружите, что это тег <textarea> или <input>. Посмотрите, изменился ли идентификатор. Я считаю, что у Microsoft есть способ добавления идентификаторов или других переменных к указанным вами идентификаторам. Возможно, вы обнаружите, что реальный код jQuery использует ваш селектор, выглядит так:

<input type="text" id="TextBox4_123124" ....

или что-то в этом роде. В этом случае вам нужно будет посмотреть, всегда ли идентификатор изменяется таким же образом, или же вам, возможно, придется использовать реализацию jQuery от Microsoft - если таковая имеется.

Чтобы по-настоящему попробовать свой селектор jQuery, попробуйте написать текстовый элемент html с чистого листа и посмотрите, подходит ли вам это, а затем переходите к расшифровке автоматически созданного html-кода Microsoft.

...