Не удается запустить автозаполнение JQuery с динамически созданной переменной ASP.net? - PullRequest
3 голосов
/ 20 февраля 2012

Я использую код автозаполнения jQuery в javascript на странице aspx. Код работает нормально, когда данные объявляются в самом скрипте, но когда я передаю переменную из кода в клиентский скрипт, это не так Работа.

<script type="text/javascript">
 $(function () {

//    var projects = [{value: "jquery", label: "jQuery", desc: "the write less, do more, JavaScript library", icon: "https://fbcdn-profile-a.akamaihd.net/static-ak/rsrc.php/v1/yP/r/FdhqUFlRalU.jpg" },
//                  {
//                    value: "jquery-ui",
//                  label: "jQuery UI",
//                 desc: "the official user interface library for jQuery",
//                 icon: "https://fbcdn-profile-a.akamaihd.net/static-ak/rsrc.php/v1/yP/r/FdhqUFlRalU.jpg"
//                                                  },
//                                                  {
//                                                  value: "sizzlejs",
//                                                  label: "Sizzle JS",
//                                                  desc: "a pure-JavaScript CSS selector engine",
//                                                  icon: "https://fbcdn-profile-a.akamaihd.net/static-ak/rsrc.php/v1/yP/r/FdhqUFlRalU.jpg"
//                                                  }
//                                                 ];
//                                                    
//                 alert(JSVar + JSVar1);

                 $("#Text1").autocomplete({
                     minLength: 0,
                     source: JSVar,
                     focus: function (event, ui) {
                         $("#Text1").val(ui.item.label);
                         return false;
                     }

                 })
                    .data("autocomplete")._renderItem = function (ul, item) {
                        return $("<li></li>")
                            .data("item.autocomplete", item)
                            .append("<a><img src='" + item.icon + "' width='32' height='32' />  " + item.label + "</a>")
                            .appendTo(ul);
                    };


                 $("#Text2").autocomplete({
                     minLength: 0,
                     source: JSVar1,
                     focus: function (event, ui) {
                         $("#Text2").val(ui.item.label);
                         return false;
                     }
                 })
                    .data("autocomplete")._renderItem = function (ul, item) {
                        return $("<li></li>")
                            .data("item.autocomplete", item)
                            .append("<a><img src='" + item.icon + "' width='32' height='32' />  " + item.label + "</a>")
                            .appendTo(ul);
                    };

             });

В коде позади, мужчина и женщина - мои основные данные ..

   string str1 = "<script type=\"text/javascript\">var JSVar='" + Female + "'; var JSVar1='" + Male + "'; </script>";

    ClientScriptManager script = Page.ClientScript;
    if (!script.IsClientScriptBlockRegistered(this.GetType(), "Var"))
    {
        script.RegisterClientScriptBlock(this.GetType(), "Var", str1.ToString());
    }

Код работает нормально, когда я использую var projects вместо JSVar и JSVar1. Но не тогда, когда я использую JSVar и JSVar1, которые динамически определяются в коде с той же структурой, что и у проектов.

ПРИМЕЧАНИЕ : я могу получить правильные значения для JSVar и JSVar1 внутри скрипта при проверке их с помощью alert () с помощью ClientScriptManager.

1 Ответ

1 голос
/ 21 февраля 2012

Вы проверили, какие ClientIDs в текстовых полях соответствуют ожиданиям?

Например, когда вы динамически создаете элементы с помощью PlaceHolder, в результате ClientID будет выглядеть примерно так: «Placeholder_Text1».

После проверки просмотрите исходный код страницы в вашем браузере. Затем либо скопируйте полный идентификатор в ваш селектор jQuery, либо используйте что-то вроде этого

$("#<%=Text1.ClientID%>").autocomplete...
...