【问题标题】:jQuery.Validate Conditional Validation RadioButton and DropDownListjQuery.Validate 条件验证 RadioButton 和 DropDownList
【发布时间】:2009-07-05 17:31:12
【问题描述】:

我正在尝试设置一些验证,以便如果选中“是”单选按钮,则需要验证另一个控件,这是一个下拉列表,以确保它没有设置为列表中的默认第一个条目“请选择...”。

我尝试了很多组合,但无法让它发挥作用。验证消息显示复选框是否被选中。

这里有一些代码!

这是我用来验证下拉列表的自定义方法。 (这适用于简单的 DDL 验证)

    $.validator.addMethod(
    "selectNone",
    function(value, element) {
        return this.optional(element) || element.value != "Please Select...";
    },
    "Please select an option."
);

要根据复选框进行验证,我已在表单中添加了一条规则

$(document).ready(function() {
        var validator = $("#BuildingsCoverForm").validate({
            rules: {
                NCBYears: {
                    selectNone: function(element) {
                        return $("*[name='PreviousInsurance']")[0].checked;
                    }
                }

            },
            messages: {
                NCBYears: {
                    selectNone: "This field is required"
                }
            }
        });
    });

这里是控件。

<p>
        <label for="PreviousInsurance" class="halfstretch">Do you have any previous insurance?</label>
        <%= Html.YesNoControl("PreviousInsurance", Model.PreviousInsurance)%>
    </p>
    <p>
        <label for="NCBYears" class="halfstretch">Building No Claim Bonus</label>
        <%= Html.DropDownList("NCBYears", ViewData["NCBYears"] as SelectList)%>
    </p>

任何想法都将不胜感激。

非常感谢

【问题讨论】:

    标签: jquery validation


    【解决方案1】:

    只要第一个下拉列表选项有一个空白值(&lt;option value=""&gt;some text&lt;/option&gt;), 以下规则将起作用:

    rules: {
      NCBYears: {
        required: function(element) {
          return $("input:radio[name='PreviousInsurance']:checked").val() == 'yes';
        }
      }                
    }
    

    来自:http://docs.jquery.com/Plugins/Validation/Methods/required#dependency-expression

    【讨论】:

    • 但它没有“请选择...”,这必须保留
    • 只有选项值必须为空,而不是文本。如果控件无法做到这一点,使用 jquery 将值更改为就绪时为空。
    【解决方案2】:

    ScottE 是正确的。我有一个从数据库填充的下拉列表,我只是在列表的最顶部附加了一个项目,并给它一个值“”。当您验证输入时,只需验证下拉列表是否为空白。如果列表从不更改,您还可以对列表进行硬编码,并在顶部添加一个带有空白值的项目,例如下面。

    _example.Add(new SelectListItem { Text = "Select Example", Value = ""});
    

    【讨论】:

      【解决方案3】:

      这不适用于当前版本的 Validate.js (v 1.7)

      我也能够证明这个概念是行不通的:

      rules: { 
        xyz: { 
          required: function(element) { 
            return true; 
          } 
        }                 
      } 
      

      这也失败了。

      【讨论】:

      • 否 - 忽略这一点。原来我正在检查 xyz 的派生词(预设一些文本,例如 - “请选择一个日期”)而不是 xyz pure。
      猜你喜欢
      • 2019-10-03
      • 1970-01-01
      • 2014-03-21
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多