3

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

<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.

+0

Как выглядят 'JSVar' и' JSVar1'? –

+1

Как я сказал, это то же самое, что и var Projects .. 'var JSVar = [{label:" Id1 ", value:" Name1 ", icon:" https://facebook.com/me/picture.jpg "}, {label: «Id2», значение: «Name2», значок: «https: // .... некоторый url»}] ' – Tani

ответ

1

Вы проверили, что идентификаторы ClientID текстовых полей - это то, что вы ожидаете от них?

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

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

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

Спасибо Шон за ответ .. Но это не моя проблема. Я не создаю текстовые поля динамически, но данные var на стороне сервера. Эти данные передаются с сервера на клиентскую сторону с помощью ClientScriptManager. Теперь я должен добавить эти данные в качестве источника в автозаполнение текстового поля, созданного на стороне клиента – Tani