jQuery验证和自定义ID

时间:2012-12-14 18:36:57

标签: jquery jquery-validate

我正在使用jquery验证,当我像这样验证时

$("#form").validate({
            // errorLabelContainer: $("div#error"),
            errorElement: "p",
            errorClass: "form-error",
            rules: {
                name: {
                    required: true,
                    minlength: 5
                }
            }
});

一切正常,但如果我有像这样的“x.child.1.0.t”的div id,我必须使用这样的东西

$("#form").validate({
            // errorLabelContainer: $("div#error"),
            errorElement: "p",
            errorClass: "form-error",
            rules: {
                x.child.1.0.t: {
                    required: true,
                    minlength: 5
                }
            }
});

这不起作用,怎么样?

3 个答案:

答案 0 :(得分:4)

将其置于"'内,与string一样,不要忘记使用name attr。

$("#form").validate({
            // errorLabelContainer: $("div#error"),
            errorElement: "p",
            errorClass: "form-error",
            rules: {
                'x.child.1.0.t': {
                    required: true,
                    minlength: 5
                }
            }
});

A validation rule associates an element with a validation method, like "validate input with name "primary-mail" with methods "required" and "email".
reference

名称复杂的字段(括号,点)

If your form consists of fields using names that aren't legal JavaScript identifiers, you have to quote those names when using the rules option: 
reference

答案 1 :(得分:4)

  

...但是,如果我有像这样的{1}}的div id ......不起作用......

你必须做两件事......

<强> HTML:

input

<强> jQuery的:

id

jsFiddle Demo

答案 2 :(得分:1)

如果您想通过id而不是name进行验证,则必须执行以下操作:

$("form").validate({
    errorElement: "p",
    errorClass: "form-error"
});

// This part is ugly because of your strange id
$("#x\\.child\\.1\\.0\\.t").rules("add", {
    required: true,
    minlength: 5
});​

演示:http://jsfiddle.net/eyKW9/3/

反斜杠的原因是你必须转义.个字符,否则jQuery / Sizzle认为它是一个类选择器。

一般来说,最好避免像这样的id值,因为你会遇到javascript和css的问题。如果可能的话,坚持使用alphanum dash和下划线。