jQuery.validate验证禁用字段

4

我在一个表单中有一个下拉菜单,它可以通过jQuery的.show()和.hide()控制哪些字段可用/不可用。在我的jquery.validate规则中,我将所有字段都设置为必填。

我的jquery.validate规则如下:

$("#new_course").validate({
ignore: ":disabled",
rules: {
"course_init_on": {required: true},
"mins_before": {required: true},
    .....

使用上述代码,仍会验证隐藏的字段并阻止表单提交。


1
“隐藏”和“禁用”是不同的。 - Pointy
4个回答

10

我看到你已经添加了忽略 ":disabled",它不同于 ":hidden"

我认为你应该使用:

$("#new_course").validate({
ignore: ":hidden",
...

1
如果你真的想要禁用表单元素(否则浏览器会提交这些数据),请使用以下代码:
$("#elm").attr("disabled", "disabled");

那么上述代码将完美地工作,您不会向服务器发布不必要的数据 :)


1

validate.js中未勾选禁用(硬编码):

elements: function() {
            var validator = this,
                rulesCache = {};

            // select all valid inputs inside the form (no submit or reset buttons)
            return $(this.currentForm)
            .find("input, select, textarea")
            .not(":submit, :reset, :image, [disabled]");
          }

你需要使用 readonly 属性而不是 disabled

0

尝试:

$("#new_course").validate({
ignore: ":hidden",
rules: {
"course_init_on": {required: true},
"mins_before": {required: true},
    .....

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接