我没有成功创建自定义jQuery验证规则

时间:2015-03-17 08:04:27

标签: jquery jqgrid jquery-validate

我想为jqGrid表创建自己的验证规则,但我的代码不起作用。为什么呢?

这是HTML:

<form id="frmTCstepCategorie">
    <fieldset class="ui-widget ui-widget-content">
        <legend class="ui-widget">
            Categorie
        </legend>
        <table id="tableCategories" name="tableCategories">
            <tr>
                <td></td>
            </tr>
        </table>
        <div style="margin-top: 10px" class="categoriesNav">
            <input type="button" id="btnAddCategory" value="Aggiungi"/>
            <input type="button" id="btnDelCategory" value="Rimuovi"/>
        </div>
    </fieldset>
</form>

这是JavaScript代码:

$.validator.addMethod("categories", function(value, element) {
    console.log("Checking...");
    return true;
}, "* Required.");

$("#frmTCstepCategorie").validate({
    rules : {
        "tableCategories" : {
            categories : true
        }
    }
});

if ($("#frmTCstepCategorie").valid()) {
    console.log("Checked!");
}

更新

@Parky告诉我正确的事情:

  

使用jQuery Validate插件,您只能验证<input><select><textarea>元素。

     

以编程方式,您可以将数据复制到隐藏的输入中,然后验证该元素。您需要将ignore选项设置为[]以验证隐藏的元素,并使用errorPlacement选项将消息放入您需要的位置。

我试图这样做,但没有成功。

如果我添加隐藏的<input>

<input type="hidden" id="hiddenCategories" name="hiddenCategories" />

我修改了ignore参数:

$("#frmTCstepCategorie").validate({
    rules : {
        "hiddenCategories" : {
            categories : true,
            ignore: []
        }
    }
});

它不起作用。

如果我将hidden更改为text

<input type="text" id="hiddenCategories" name="hiddenCategories" />

它有效

错误在哪里?

1 个答案:

答案 0 :(得分:2)

  

我想为jqGrid表创建自己的验证规则,但我的代码不起作用。为什么呢?

在您的代码中,您尝试将验证规则分配给<table>元素。

使用jQuery Validate插件,您只能验证<input><select><textarea>元素。无论您使用什么规则,标准或自定义,这些都是唯一可行的元素,并且没有解决方法可以让您验证<table><td>元素。

以编程方式,您可以将数据复制到隐藏的input中,然后验证该元素。您需要将the ignore option设置为[]才能验证隐藏的元素,并可能the errorPlacement option将邮件放在您需要的位置。


编辑:

$("#frmTCstepCategorie").validate({
    ignore: [],   // <- ignore is an OPTION, not a rule
    rules : {
        "hiddenCategories" : {
            categories : true
        }
    }
});