【问题标题】:Jquery validation dropdown listJquery 验证下拉列表
【发布时间】:2017-04-04 11:38:41
【问题描述】:

下拉列表:

<div class="col-md-2">
    <div class="form-group">
        <label for="field-3" class="control-label">Priority</label>
        <select id="lstpriority" class="selectpicker" data-live-search="true" data-style="btn-white">
        </select>
    </div>
</div>

jQuery 验证:

$("#frmAddEdit").validate({
    lstpriority: {
        required: {
            depends: function (element) {
                return $("#lstpriority").val() == "";
            }
        }
    },
    messages: {
        lstpriority: {
            required: "Please select an option from the list",
        },
    },
    submitHandler: function (form) {
        abc();
        return false;
    }
});

下拉绑定:

function bindPrioritytype() {
    $.ajax({
        dataType: "json",
        type: "POST",
        url: 'AdminWeb.asmx/GetLOV',
        data: 'id=0&type=PRIORITYTYPELOV',
        async: true,
        success: function (data) {
            $("#lstpriority").append("").val("").html("");
            $("#lstpriority").append($("<option></option>").val("").html("Select"));
            $.each(data, function (key, val) {
                $("#lstpriority").append($("<option></option>").val(val.TB_ID).html(val.TB_NAME));
            });
            $('#lstpriority').selectpicker('refresh');
        }
    });
}

即使我尝试添加所需的类,我也无法在提交时验证下拉列表。我想验证下拉列表,请帮我解决这个问题。

【问题讨论】:

  • 你用 ASP 标记了这个问题。这是否意味着您也在使用不显眼的插件?如果是这样,你不能打电话给.validate(),因为 unobtrusive 已经为你做了这件事。您的将永远被忽略。
  • 否则,你必须有一个name属性并且使用这个名字在rules对象中声明规则。
  • 我没有使用不显眼的插件我已经添加了名称属性但仍然没有收到错误消息你能给我一个例子吗?
  • 一个例子? SO 上发布了超过六千个示例!

标签: javascript c# jquery asp.net jquery-validate


【解决方案1】:

尝试使用

lstpriority: {required: true}

而不是

lstpriority: {
                required: {
                    depends: function (element) {
                        return $("#lstpriority").val() == "";
                    }
                }
            },

【讨论】:

  • 与它无关。当他还在使用不显眼的插件时,他不能打电话给.validate()。他还需要在输入元素上有name="lstpriority" 属性。
  • 如果不使用不显眼的插件,那么它将使用 class="required" 将类分配给下拉列表
  • 无论如何,他缺少name 属性,如果没有它,这个插件失败。
  • 我认为name属性不会使插件失败,除非不能修改.validate()的错误信息
  • 错了。 name 属性始终是必需的。只需查看文档。
【解决方案2】:

使用这段代码。您还可以在valueNotEquals: "" 中声明一些默认选择,例如Choose.. 或Select and,您可以将其更改为valueNotEquals: "Select"

完整代码

 // configure your validation on a list
 $("#frmAddEdit").validate({
  rules: {
   lstpriority: { valueNotEquals: "" }
  },
  messages: {
   lstpriority: { valueNotEquals: "Please select an item!" }
  }  
 });

【讨论】:

  • 我试过了,它没有显示错误信息。
  • 尝试在规则中使用 {min:1} 以获取 ist
  • 与它无关。当他还在使用不显眼的插件时,他不能打电话给.validate()。他还需要在输入元素上有name="lstpriority" 属性。
猜你喜欢
  • 1970-01-01
  • 2012-03-12
  • 2022-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多