【问题标题】:MVC3 - jQuery datepicker when multiple elements have the same IDMVC3 - 多个元素具有相同 ID 时的 jQuery 日期选择器
【发布时间】:2011-11-07 22:02:34
【问题描述】:

我在使用日期选择器时遇到了一个奇怪的情况(不是吗?),我想得到一些建议。

我有一个包含位置列表的屏幕,对于每个位置,他们可以单击编辑并编辑该位置。编辑显示在编辑链接下方,他们可以一次编辑多个位置。这意味着同一个 View 会在屏幕上多次呈现,因此会存在多个具有相同 id 的字段(编辑 4 个位置将产生 4 个“DateOpened”字段)。

因此,当我加载视图时,javascript 会将日期选择器添加到任何需要它的字段,如下所示:

$(document).ready(function () {
    var elements = $(".NeedsDatePicker > td > input");
    $(".NeedsDatePicker > td > input").datepicker();
    $(".NeedsDatePicker").removeClass("NeedsDatePicker");
});

工作正常,但是,正如您可能已经知道的那样,当我单击日历上的日期时,当多个编辑窗口打开时,它会填充第一个“DateOpened”字段。

有没有办法告诉日期选择器在某个父级中使用该字段,就像你可以用于一般的 jQuery 选择?

$("#DateOpened", "Location-134").doWhatever...

...或者有没有办法在不破坏 MVC 的 UpdateModel() 函数的情况下为字段提供不同的 id?或任何其他建议?

【问题讨论】:

    标签: javascript asp.net-mvc jquery-ui datepicker updatemodel


    【解决方案1】:

    您绝对应该在 HTML DOM 中保持 ID 的唯一性。大多数(如果不是全部)DOM 操作库/框架,包括 jQuery,都内置了这个假设。

    关于 SO WRT 有几个问题可以避免表单中出现相同的 ID:

    【讨论】:

    • 但这不会破坏 MVC 的 TryUpdateModel 吗?它不会找到名为“LocationAddress”的字段,而是会找到与它绑定的模型不匹配的 LocationAddress1、2 等。
    • 如果你有多个具有相同 ID 的元素,那不会多次更新同一个元素吗?我认为解决这个问题的一种方法可能是让视图模型包装具有相同属性名称的模型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 2011-03-19
    相关资源
    最近更新 更多