Html.listboxfor() 如何捕获更改/添加项目的事件 - Jquery MVC (C#)

Posted

技术标签:

【中文标题】Html.listboxfor() 如何捕获更改/添加项目的事件 - Jquery MVC (C#)【英文标题】:Html.listboxfor() how to capture event on change/add item - Jquery MVC (C#) 【发布时间】:2020-02-14 01:49:49 【问题描述】:

我有一个需求,我想在 MVC C# 中将项目添加到列表框时进行捕获。有两个列表框,一个用于可用项目,另一个用于选定项目,我正在使用按钮将项目从可用项目添加到选定项目。我不能使用按钮事件,因为它们通常是为多个屏幕编写的。所以我需要一些类似于选定列表框的更改事件的东西,这样我就可以执行特定的操作。

我似乎无法找到change 事件不起作用的原因。

@html.ListBoxFor(x => x.SelectedValues, new MultiSelectList(Model?.SelectedValues, "Code", "Description"), new 
 
  @style ="width:300px; ", 
  size = 20, 
  name = "All", 
  @class = "evo-no-padding-right" 
)
$('#SelectedValues').change(function () 
  const selected = $("#SelectedValues");
  if (selected.length > 0) 
    $("#" + selected).width = "300px";
   else 
    $("#" + selected).width = "260px";
  
);

请提出建议。

【问题讨论】:

当一个项目添加到列表框时捕获是什么意思?您的意思是您正在动态创建元素,或者您想知道用户何时选择了某些东西?它还有助于查看实际的 HTML 输出。 是的,我有 2 个列表框。一个有一个可用项目的列表,并在按钮单击时添加到第二个(选定的)列表框。 当列表项选择发生变化时,变化应该起作用。当它添加到列表中的项目时它不起作用。您可以在列表本身中添加项目后编写事件代码。 【参考方案1】:

您的 jQuery 无效。再次调用选择器时不需要附加哈希。

const selected = $("#SelectedValues");
if (selected.length > 0) 
    $(selected).css("width", "300px");
 else 
    $(selected).css("width", "260px");

【讨论】:

他也可以使用$(this),因为他在回调中?

以上是关于Html.listboxfor() 如何捕获更改/添加项目的事件 - Jquery MVC (C#)的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用我的 @Html.ListBoxFor()

MVC 方法从 ListBoxFor 方法输出无序列表

如何使用 Html.Listboxfor 和 Html.Beginform

如何从 ListBoxFor 中删除选定的属性

如何在 Mvc3 中填充 ListBoxFor?

无法获得 @Html.ListBoxFor() 的正确语法