Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何创建一个空列表框并传递选项而不选择它们?_Jquery_Asp.net Mvc_Listbox - Fatal编程技术网

Jquery 如何创建一个空列表框并传递选项而不选择它们?

Jquery 如何创建一个空列表框并传递选项而不选择它们?,jquery,asp.net-mvc,listbox,Jquery,Asp.net Mvc,Listbox,在我的表单中,我将类别从一个列表框移动到另一个列表框,如下所示: 底部的框是“输入”框,在发布表单时在服务器端读取。下面是创建列表框的方法: <%: Html.ListBoxFor(m => m.categories, Model.categories)%> jQuery在加载时删除选项: $("#categories").find("option").remove(); 问题 1.我可以创建一个在所有浏览器中都可用的空列表框吗? 2.我是否必须选择底部框中的选项,或者是

在我的表单中,我将类别从一个列表框移动到另一个列表框,如下所示:

底部的框是“输入”框,在发布表单时在服务器端读取。下面是创建列表框的方法:

<%: Html.ListBoxFor(m => m.categories, Model.categories)%>
jQuery在加载时删除选项:

$("#categories").find("option").remove();
问题
1.我可以创建一个在所有浏览器中都可用的空列表框吗?
2.我是否必须选择底部框中的选项,或者是否有解决方法

澄清:我希望在服务器端完成尽可能多的工作,最好是与MVC相关的工作。

1。 检查空列表框的浏览器兼容性

二,


Firefox有这样的特性,它需要创建空白元素以便实际显示选择元素。恐怕你无法解决这个问题。但是,为#2提供一个潜在的解决方案可能会消除您对#1的担忧

如果在“添加”和“删除”按钮上构建一个jQuery click事件处理程序,以便为在框之间可视移动的每个值创建和销毁具有相同名称属性的隐藏输入,则它们将作为CSV字符串到达
请求的相应成员中。表单
集合,可通过调用以下命令将其转换为值数组:

Request.Form("myHiddenInputName").Split({","c})

或等效的C代码。您不需要在提交时选择元素,也不需要担心删除Firefox在服务器端创建的空值。当然这可能不是MVC体系结构中最吸引人的解决方法,但这是我的第一个反应,所以我想与大家分享。

1:与其删除所有选项,不如删除空选项,这样它就不会重置

$('#mySelect option').each(function () {
    if(!$(this).val())
        $(this).remove();
});

为什么不使用简单的HTML创建列表框;而不是使用助手

<select style="width: 370px;" class="cmbBox1" id="ServicesList" 
multiple="multiple" name="ServicesList" size="8"></select>


1.
这不是mvc特有的,只是普通的HTML?您知道如何使用ListboxFor()进行渲染吗<代码>2。这只是我的jQuery的一个较短版本。在服务器端可以这样做吗?很抱歉,也许你应该更改你的两个问题,因为你没有特别指定任何内容。因为如果我更改模型及其属性,我也必须搜索html以更改所有id,手动匹配它们。如果这是唯一的解决方案,我宁愿让jQuery脚本删除客户端的选项。
$('#mySelect option').each(function () {
    if(!$(this).val())
        $(this).remove();
});
<select style="width: 370px;" class="cmbBox1" id="ServicesList" 
multiple="multiple" name="ServicesList" size="8"></select>