2016-11-18 68 views
0

我的web表单模型(AdtFormModel)这一变量:jQuery的自动完成 - 字符串数组

public List<String> TemoinsVille { get; set; } 

我用一个列表,因为我希望用户能够在形式动态地添加更多“TemoinsVille”。现在我有两个文本框,当我填写它们时,我的控制器会收到一个包含2个项目的字符串列表。我将添加此功能以便稍后动态添加TemoinsVille。

在我的表单中,我想为这个TemoinVille变量使用一个自动完成的字段。我使用了一种名为'AutocompleteTous'的方法,我在表单中的其他地方使用它。我不知道如何编写脚本,以便自动完成对第二个TemoinVille输入有效。

我jQuery代码是:

var auto5 = $('#AdtFormModel_TemoinsVille').autocomplete({ 
     source: '@Url.Action("AutocompleteTous", "InvForm")', 
     minLength: 3, 
     delay: 400 
    }).data("ui-autocomplete"); 
    auto5._renderItem = function (ul, item) { 
     return $("<li>") 
      .attr("ui-autocomplete-item", item) 
      .append(item.label.split("|")[0]) 
      .appendTo(ul); 
    }; 
    auto5._renderMenu = function (ul, items) { 
     var that = this; 
     $.each(items, function (index, item) { 
      that._renderItemData(ul, item); 
     }); 
     $(ul).addClass("dropdown-menu"); 
    }; 

在我看来,我个人有T TemoinVille textboxfor输入:

@Html.TextBoxFor(x => x.AdtFormModel.TemoinsVille, new { Class = "form-control" }) @Html.ValidationMessageFor(x => x.AdtFormModel.TemoinsVille, null, new { @class = "text-danger" }) 

@Html.TextBoxFor(x => x.AdtFormModel.TemoinsVille, new { Class = "form-control" }) @Html.ValidationMessageFor(x => x.AdtFormModel.TemoinsVille, null, new { @class = "text-danger" }) 

自动完成工程第一个输入,而不是第二...

下面是两个输入的HTML代码:

<div class="invalidite-section"> 
     <input Class="form-control" id="AdtFormModel_TemoinsVille" name="AdtFormModel.TemoinsVille" type="text" value="" /> <span class="field-validation-valid text-danger" data-valmsg-for="AdtFormModel.TemoinsVille" data-valmsg-replace="true"></span> 
    </div> 

<div class="invalidite-section"> 
     <input Class="form-control" id="AdtFormModel_TemoinsVille" name="AdtFormModel.TemoinsVille" type="text" value="" /> <span class="field-validation-valid text-danger" data-valmsg-for="AdtFormModel.TemoinsVille" data-valmsg-replace="true"></span> 
    </div> 

有什么建议吗?

+0

你能分享的HTML还好吗? –

+0

整个cshtml页面?我的textboxfor的html代码有 –

+0

不,您向我们展示了您用于生成html的代码,我希望看到输入部分生成。另请检查我的答案 –

回答

1

您正在为编号#AdtFormModel_TemoinsVille,这是输入权吗? 该ID在页面上必须是唯一的。所以它只会在找到它的第一个输入时起作用。

您需要按类别定位元素,然后自动完成应该在所有输入中工作。

尝试这样的事:

var auto5 = $('.form-control input').autocomplete({ // I suppose .form-control is a div that contains the input 
+0

如何定位正确的变量?我的模型(AdtFormModel)变量是一个字符串列表,两个textboxfor输入都是该列表的一个元素..我试过 $(。AdtFormModel.TemoinsVille)和$(。TemoinsVille) –

+0

我需要查看生成的html,看看是什么正确的课程。试试这个:'$('。form-control input')。autocomplete({'。我想.form-control是一个包含输入的div .. –

+0

谢谢,现在就工作! –