2012-12-14 52 views
1

我使用JQuery验证,并且当我确认这样jQuery的验证和自定义ID的

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

一切工作正常,但如果我有DIV ID这样的“x.child.1.0.t” ,我必须用这样的东西

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

而这不工作,怎么样?

+1

默认情况下,'.validate()'插件正在寻找'input'的name属性不是他们的'id'。 – Sparky

+0

你是对的,这是主要的问题,通过名字,一切都工作:)虽然测试我有相同的ID和名称,但在生产中他们是不同的。谢谢 – MyMomSaysIamSpecial

+1

对于'id'或'name'来说,这是一个非常奇怪的值。使用更常见的格式可能会更容易。 –

回答

4

...但如果我有我的div d这样x.child.1.0.t ...是不工作...

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

HTML:

<input name="x.child.1.0.t" /> 

的jQuery:

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

jsFiddle Demo

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

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

+0

@WesleyMurch谢谢:) –

+2

@WesleyMurch,但是,它正在寻找'name'属性,jsFiddle没有它。 http://jsfiddle.net/eyKW9/1/ – Sparky

1

如果您想通过验证3210,而不是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 /灒认为它是一类选择。

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