Eric Hynds的jQuery MultiSelect - 如何获得选中的选项

时间:2013-04-16 07:45:49

标签: jquery multi-select

有人可以帮我从Eric Hynds的jQuery MultiSelect中获取所选的选项,并使用razor语法将它们插入到sdf文件中

这是我的Razor + HTML代码 - 我在webmatrix startersite中用作模板

@{  var db = Database.Open("StarterSite");
    var selectQueryString = "SELECT * FROM Details where team like 'EMT'";
    }
<script src="~/Scripts/jquery.ms.js">
</script>
<script type="text/javascript">
    $(function ()
    {
        $("select").multiselect();
    });
    $(function ()
    {
        $("input[type=submit]").button();
    });


</script>
<link href="~/Content/ms.css" rel="stylesheet" type="text/css">


<form method="post">




    <select multiple id="all" name="all" multiple="Multiple">
                @{foreach(var row in db.Query(selectQueryString))
          {
            <option>@row.fname</option>
          }

         }
    </select>

        <input type="submit" value="Send Report" id="Repot" />

</form>

2 个答案:

答案 0 :(得分:1)

您可以在单击时为所选选项添加项目到数组,然后使用该数组供以后使用。有关各种活动,请参阅documentation

  

点击 :选中或取消选中复选框时触发。 JS   $(“#multiselect”)。on(“multiselectclick”,function(event,ui){/ *   event:原始事件对象ui.value:复选框的值   ui.text:复选框ui.checked的文本:输入是否为   选中或取消选中(布尔值)* /});

像这样的东西

$("select").multiselect({
    click: function(event, ui){
        if(ui.checked){//if checked
          ...push the value into array
        }
        else {//if unchecked
          ...remove that value from array
        }
    }
});

<强>更新

site处提到它。 (搜索'我如何......?')

  

检索所有选定的值?

     

最简单的方法是在选择框上调用val():

var values = $("select").val();
  

使用multiselect API可以实现同样的目的。打电话给   getChecked方法并映射一个新数组:

var array_of_checked_values = $("select").multiselect("getChecked").map(function(){
   return this.value;    
}).get();

答案 1 :(得分:1)

对于您的项目来说,这可能有点太晚了,但它有望帮助其他人。

我在更新中使用更简单的方法:

    var values = $("select").val(); 

因此,如果您选中了选项2,4和6,则“值”将是这样的字符串:“2,4,6”。如果您正在开发MVC项目,则需要将此字符串保存在表单上的隐藏字段中,否则控制器将无法访问它。在我的代码中,我使用“close”事件将输出(即2,4,6)写入名为“output”的隐藏文本框。

一些代码段:

在表单上创建一个隐藏字段:

    @Html.Hidden("output", null)

在初始多选定义中定义“close”事件处理程序:

    <script type='text/javascript'>
        $('select').multiselect(function() {
           //your code
           close: function(event, ui){
               var values = $('select').val();
               $('#output').val(values);
               // you can inspect the value using alert(values); 
           },
           // your code
           // your code
        });
    </script>

现在,在编辑动作的后期部分,表单[“output”]等于“2,4,6”。

如何使用它来更新数据库取决于项目中的许多参数。如果您一直坚持MVC模式指南,则只需在控制器编辑操作中刷新模型,并使用修改后的模型调用更新(或put)方法。

希望这有帮助。

由于

纳赛尔。