我想为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" />
它有效
错误在哪里?
答案 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
}
}
});