我正在利用广受欢迎的Bassistance jquery validate plugin来验证我的表单。在同一表格中,我正在使用xoxco's jQuery Tags Input Plugin。
我可以验证表单上的所有表单字段,但“标签输入”插件使用的字段除外。
原因是,原始输入被隐藏,插件绘制了新的输入。
任何有关将我的验证样式应用于标签输入的帮助都将受到赞赏,Thanx
答案 0 :(得分:8)
两个问题:
name
。如果属性不存在,验证将无法正常运行。ignore: []
包含隐藏字段的验证。总而言之,您的代码应如下所示:
<强> HTML:强>
<form id="someForm" name="someForm" method="post">
<input type="text" name="required-field" class="required"/>
<input id="tagsx" type="text" name="tags" class="required" />
<input type="submit" value="submit"/>
</form>
<强> JavaScript的:强>
$(document).ready(function () {
$("#someForm").validate({
ignore: []
});
$('#tagsx').tagsInput({
width: 'auto',
autocomplete_url: 'http://xoxco.com/projects/code/tagsinput/test/fake_json_endpoint.html'
});
});
示例: http://jsfiddle.net/5eC5B/
请注意,您必须使用errorPlacement
或类似内容才能正确显示错误消息。
答案 1 :(得分:7)
您可以通过使用自定义方法验证虚拟文本字段来验证标记字段。
<form id="someForm" name="someForm" method="post">
<input type="text" id="txt1" name="txt1"/>
<input id="tagsx" name="tagsx" type="text" />
<input id="dummy" name="dummy" type="text" /><!-- dummy text field -->
<input type="submit" value="submit"/>
</form>
/*To hide dummy text field*/
#dummy{
visibility: hidden!Important;
height:1px;
width:1px;
}
$(document).ready(function () {
$.validator.addMethod("checkTags", function(value) { //add custom method
//Tags input plugin converts input into div having id #YOURINPUTID_tagsinput
//now you can count no of tags
return ($("#tagsx_tagsinput").find(".tag").length > 0);
});
$("#someForm").validate( {
rules: {
txt1:"required",
dummy:"checkTags"
},
messages: {
txt1: "Required",
dummy: "Required"
}
});
$('#tagsx').tagsInput({
width: 'auto',
autocomplete_url: 'http://xoxco.com/projects/code/tagsinput/test/fake_json_endpoint.html'
});
});
答案 2 :(得分:4)
validate-Plugin的默认设置是ignore: ":hidden"
,它使用jQuery.not()
从ignore-option中排除所有内容。
如果要包含隐藏字段,可以使用:
$("#myform").validate({
ignore: ""
});
在您的情况下使用此Javascript代码:
$(document).ready(function () {
$("#someForm").validate({
ignore: ""
});
$('#tagsx').tagsInput({
width: 'auto',
autocomplete_url: 'http://xoxco.com/projects/code/tagsinput/test/fake_json_endpoint.html'
});
});
更新正如我在验证码中看到的那样,强烈要求name
- 属性,因为插件会存储name
的所有内容。即使您只在代码中添加ignore: ""
,也会产生一次验证错误,因为它存储的内容与name
相同,且名称为null
。
这是一个有效的JSFiddle:
答案 3 :(得分:1)
jQuery validate默认忽略不可见的字段。要覆盖此行为,请使用$("#someForm").validate({ignore:""});