ASP.NET MVC - 使用javascript在运行时添加表单元素

时间:2011-09-02 16:17:01

标签: javascript jquery asp.net-mvc asp.net-mvc-3 jquery-ui

在我的表单中,我在For循环中添加了许多输入元素,如下所示。

 @For Each itm As LineItem In Model.LineItems
            Dim lnitm As LineItem = itm
    @<tr>

            <td>@lnitm.Name
            </td>
            <td>@Html.TextBoxFor(Function(model) model.LineItem(lnitm.ID).Value)
            </td>
            <td>@Html.TextBoxFor(Function(model) model.LineItem(lnitm.ID).Currency)
            </td>
        </tr>

        Next

我想在Currency文本框中添加一些jQuery,以便我可以自动完成工作。 在我的其他页面中,我使用了jQuery函数,例如:

$(function () {
$("#HomeCurrencyID").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "/autocomplete/Currencies", type: "POST", dataType: "json",
                data: { searchText: request.term, maxResults: 10 },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item.ID + " (" + item.Symbol + ") " + item.Description, value: item.ID , id: item.ID }
                    }))
                }
            })
        },
    });
});

这在我知道输入元素的ID的地方工作正常,我将该元素专门添加到HTML中,而不是通过循环添加它。

如何将上面的jQuery功能添加到For循环中创建的所有货币文本框中?我是否需要在运行时添加Javascript?

解决

将Function声明更改为类名,并将该类添加到文本框中,如下所示;

$("#CurrencyClass") 

@Html.TextBoxFor(Function(model) model.LineItem(lnitm.ID).Currency, New With {Key .class = "CurrencyClass"})

感谢您及时回复!

1 个答案:

答案 0 :(得分:1)

您需要能够选择所有这些文本框来运行自动完成脚本,为此,您可以添加一个类,然后更新脚本中的选择器。

在视图中:使用new {@class = "yourClass"}(或其等效的VB)作为文本框助手的htmlAttributes参数,为所有文本框提供一个类(请参阅http://msdn.microsoft.com/en-us/library/ee703535.aspx#Y200)。

在脚本中:将$("#HomeCurrencyID")替换为$(".yourClass"),它会将这些函数运行到所有匹配的元素,这些元素将是yourClass的文本框