8

我正在使用流行的Bassistance jquery validate 插件来验证我的表单。在同一个表单上,我正在使用xoxco 的 jQuery Tags Input Plugin

我能够验证表单上的所有表单字段,但“标签输入”插件正在使用的字段除外。

原因是,原始输入被隐藏,插件绘制了新输入。

jsFiddle 示例

将我的验证样式应用于标签输入的任何帮助将不胜感激,谢谢

4

4 回答 4

9

两个问题:

  1. 您的所有字段都必须有一个name. 如果该属性不存在,验证将无法正常运行。
  2. 您必须验证您的案例中的隐藏字段。您想要做的是用于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或类似方法才能正确显示错误消息。

于 2012-07-02T18:41:15.713 回答
8

您可以通过使用将验证您的标签字段的自定义方法验证虚拟文本字段来做一个技巧。

HTML:

<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>

CSS:

/*To hide dummy text field*/
#dummy{
    visibility: hidden!Important;
    height:1px;
    width:1px;
}

JavaScript:

$(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' 
    });
});
于 2012-07-08T20:20:45.063 回答
5

validate-Plugin 的默认设置ignore: ":hidden"用于jQuery.not()从忽略选项中排除所有内容。

如果要包含隐藏字段,可以使用:

$("#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强烈需要 -Attribute,因为插件将所有内容都存储在name. 即使您只添加ignore: ""到代码中,它也会给出一个验证错误,因为它的存储方式相同name并且名称为null.

这是一个有效的 JSFiddle:

JSFiddle

于 2012-07-04T11:14:35.773 回答
1

jQuery validate 默认忽略不可见的字段。要覆盖此行为,请使用$("#someForm").validate({ignore:""});

于 2012-07-02T16:53:36.360 回答