Jquery 在razor视图中将渲染项自动完成到动态文本框?

Jquery 在razor视图中将渲染项自动完成到动态文本框?,jquery,jquery-autocomplete,jquery-ui-autocomplete,Jquery,Jquery Autocomplete,Jquery Ui Autocomplete,我在razor部分视图中有几个文本框,这些文本框将根据条件提供。其中1附加到autocomplete,代码如下,但当加载部分视图时,出现错误(如果文本框不可用) 0x800a138f-JavaScript运行时错误:无法设置属性 未定义或空引用的“\u renderItem” 如果文本框在Razor视图中可用,则不会出现错误 我的Jquery代码是 <script type="text/javascript"> $(function () { var view = $(doc

我在razor部分视图中有几个文本框,这些文本框将根据条件提供。其中1附加到autocomplete,代码如下,但当加载部分视图时,出现错误(如果文本框不可用)

0x800a138f-JavaScript运行时错误:无法设置属性 未定义或空引用的“\u renderItem”

如果文本框在Razor视图中可用,则不会出现错误

我的Jquery代码是

<script type="text/javascript">
$(function () {
    var view = $(document).findByClass("product-view");
    var companysource = view.data("datasource-url");
    $("#txtcompany").autocomplete({
        minLength: 0,
        source: function (request, resonse) {
            $.ajax({
                url: companysource,
                data: { term: $('#txtcompany').val() },
                dataType: "json",
                type: "GET",
                success: function (data) {
                    resonse(data);
                }
            });
        },
        focus: function (event, ui) {
            $("#txtcompany").val(ui.item.Name);
            return false;
        },
        select: function (event, ui) {
            $("#txtcompany").val(ui.item.Name);
            return false;
        },
        change: function (event, ui) {
            if (ui.item == null) {

            } else {

            }
        }
    })
    .data("ui-autocomplete")._renderItem = function (ul, item) {
        return $("<li>")
            .data("ui-autocomplete-item", item)
            .append("<div style='margin-bottom:2px; padding:1px 1px; font-size:14px;'><a>" + "<b>Company Name: </b>" + item.Name + "</a></div>")
            .appendTo(ul);
    };
});

$(函数(){
var view=$(document.findByClass(“产品视图”);
var companysource=view.data(“数据源url”);
$(“#TXT公司”).autocomplete({
最小长度:0,
来源:功能(请求、响应){
$.ajax({
url:companysource,
数据:{term:$('#txtcompany').val()},
数据类型:“json”,
键入:“获取”,
成功:功能(数据){
反应(数据);
}
});
},
焦点:功能(事件、用户界面){
$(“#txtcompany”).val(ui.item.Name);
返回false;
},
选择:功能(事件、用户界面){
$(“#txtcompany”).val(ui.item.Name);
返回false;
},
更改:功能(事件、用户界面){
如果(ui.item==null){
}否则{
}
}
})
.data(“ui自动完成”)。\u renderItem=功能(ul,项目){
返回$(“
  • ”) .data(“ui自动完成项”,项) .append(“+”公司名称:“+项.名称+”) .附录(ul); }; });

  • 您应该首先检查dom中是否存在文本框:

      var txtcompany = $("#txtcompany");
      alert(txtcompany.length);
    
      if (txtcompany.length === 1) {
    
          txtcompany.autocomplete({ ...
    
      };
    

    谢谢@irfan。我做了类似的事情。长度>1