【问题标题】:Add jQuery validationrule for multi-select为多选添加 jQuery 验证规则
【发布时间】:2012-03-25 21:00:21
【问题描述】:

在我的 ASP.NET MVC 应用程序中,我有一个带有选择标签的视图,可以选择多个选项。

默认情况下(当页面加载时)我在选择中没有选项。通过某些操作,可以使用选项填充选择,并且效果很好。

现在,当我提交表单时,我想检查选择是否有任何选项,因为在提交表单时要求选择至少有一个选项。我不想检查是否选择了任何选项,只要选择有任何选项。这是我到目前为止所得到的:

<select multiple="multiple" style="width:200px;" id="PersonnelClasses"
                name="PersonnelClasses"></select>

还有 jQuery 代码:

$("#PersonnelClasses").rules("add", {
    required: true
});

现在,检查 select 列表中是否有任何项目的规则是什么样的?我在 SO 和 jQuery 文档中都没有找到任何解决方案。

更新:

为选择添加选项的代码:

this.addPersonnelClass = function () {
        $('#selectablePersonnelClasses :selected').
          each(function (value, item) {
            $('#PersonnelClasses')
              .append($('<option></option>')
              .val(item.value) 
              .html(item.text));
    });
};

【问题讨论】:

  • 根据您的代码,您的问题非常模糊。这真的是您的select 标签的样子吗?你的控制器和你的视图的其余部分呢?有什么东西可以动态地为选择添加更多选项吗?
  • 这正是我的选择标签的样子。我认为任何其他代码都不重要。在我的控制器中,我只是通过 FormCollection 获取表单数据。视图的其余部分(除了提交按钮)由第二个选择和一个用于将项目添加到第一个选择的按钮组成。这发生在一些 jQuery 代码上,但与验证无关......
  • 那么select 选项如何变化?
  • 检查我更新的问题以获取该代码。但我还是不明白这和验证有什么关系?

标签: jquery asp.net-mvc html jquery-validate validation


【解决方案1】:

据我了解,页面已加载,用户单击几件事,然后选择会动态填充选项。您想要的是在更新后获得选项的数量。

看看下面的代码:

<html>
<head>
     <script src="js/jquery.js" type="text/javascript"></script>
      <script type="text/javascript">
            function checkLength(){
                alert($('#PersonnelClasses option').length);
            }
      </script>
</head>
<body>
<form NAME="myform" ACTION="" METHOD="GET">
    <select multiple="multiple" style="width:200px;" id="PersonnelClasses" name="PersonnelClasses">
        <option>bla</option>
        <option>lala</option>
        <option>lolo</option>
        <option>l4</option>
    </select>
    <input type="button" name="mysubmit"  onClick="checkLength()" value="Click" />
</form>
</body>
</html>
  • 此示例在每次单击按钮时检查选择中的选项数量。 (此点击是网页加载后发生的操作并且用户已填充选择)
  • 不要将函数放在document.ready函数中(否则找不到函数)

【讨论】:

  • 这不是我最初寻找的,我一直在寻找 jQuery 验证规则,但我调整了您的解决方案以使其在另一个 jQuery 函数中工作。所以你的解决方法已经足够好了.. :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多