【问题标题】:Unable to run Autocomplete jQuery with dynamically created variable ASP.net?无法使用动态创建的变量 ASP.net 运行自动完成 jQuery?
【发布时间】:2012-03-11 00:19:28
【问题描述】:

我在 aspx 页面的 javascript 中使用 jQuery 自动完成代码。当在脚本本身中声明数据时,代码工作正常,但是当我将变量从代码隐藏传递到客户端脚本时,它不会 工作。

<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 而不是JSVarJSVar1 时,代码运行良好。但不是当我使用 JSVar 和 JSVar1 时,它们是在代码隐藏中动态定义的,具有与项目相同的结构。

注意:在使用 ClientScriptManager 使用 alert() 验证它们时,我能够在脚本中获得 JSVar 和 JSVar1 的正确值。

【问题讨论】:

  • JSVarJSVar1 长什么样子?
  • 正如我所说,它与 var Projects 相同。var JSVar = [{ label: "Id1", value:"Name1", icon: "https://facebook.com/me/picture.jpg"}, { label: "Id2", value: "Name2", icon: "https://.... some url" }]

标签: javascript asp.net jquery-ui autocomplete jquery-ui-autocomplete


【解决方案1】:

您是否检查过文本框的 ClientID 是否符合您的预期?

例如,当您使用 PlaceHolder 动态创建元素时,生成的 ClientID 将类似于“Placeholder_Text1”。

渲染后在浏览器中查看页面源以进行检查。然后将完整的 id 复制到您的 jQuery 选择器中或使用类似的东西

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

【讨论】:

  • 感谢 Sean 的回复。但这不是我的问题。我不是动态创建文本框,而是在服务器端创建 var 数据。该数据使用 ClientScriptManager 从服务器端传递到客户端。现在我必须将此数据作为源添加到客户端创建的文本框的自动完成中
猜你喜欢
  • 2019-01-25
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多