2013-01-24 65 views
1

我使用jQuery驗證插件可用的jQuery的官方網站上validade我的形式。一切都在就好了,直到我必須通過的規則,而不是基於字段name,但classid。我無法做到這一點。通行證規則類的jQuery驗證插件

這個我如何通過規則來現場與name="comment"的例子。

這是我的jQuery代碼

$("#comForm").validate({ 
    rules: { 
     comment: { 
      required: true, 
      minlength: 5, 
      maxlength: 500 
     } 
    } 
}); 

這是我的形式

<form id="comForm" action="#" method="post" > 
    <textarea rows="4" name="comment" placeholder="What do you think?" class="input-xxlarge" id="defaultform"></textarea></br> 
    <textarea rows="4" name="othercomment" placeholder="What do you think?" class="input-xxlarge" id="defaultform"></textarea></br> 
    <input type="submit" value="Rate!" class="btn btn-primary"> 
    </form> 

這麼說吧,我想規則傳遞給每一個領域與默認形式id或與input-xxlarge所有領域class。那可能嗎?

+1

你不能有重複的'id's元素。你會遇到各種麻煩 - 改爲使用類。 –

回答

2

是的,它是可能的,但你真的不應該使用重複id的...這是無效的HTML,它會導致JavaScript問題。如果你需要重複使用class

使用內置rules()方法添加規則和class爲它們分配。 See documentation.

然後使用jQuery的.each()方法來將規則應用於使用同一class所有匹配的元素。

HTML:

<form id="myform"> 
    <textarea class="myclass" name="field1" ></textarea> 
    <textarea class="myclass" name="field2" ></textarea> 
</form> 

的jQuery:

$('#myform').validate({ 
    // your other rules and options 
}); 

// the following method must come AFTER .validate() 
$('.myclass').each(function() { 
    $(this).rules('add', { 
     required: true, 
     minlength: 5, 
     maxlength: 500, 
     messages: { 
      required: "Required input", 
      minlength: "Must be at least {0} characters", 
      maxlength: "Must be less than {0} characters" 
     } 
    }); 
}); 

Working DEMO


而且,類似於噸Ø這個問題:

jQuery Validate set rule using wildcard to find target fields

+0

感謝這非常有幫助,唯一的問題是,當發生錯誤時,jquery總是在第一個.myclass中添加錯誤類,關於如何更改該錯誤的任何想法? –

+0

@André,[看我的演示](http://jsfiddle.net/4ujFS/)。該錯誤已正確添加到_both_字段。你必須使用'.each()'。 – Sparky

+0

我真的不知道發生了什麼,這是http://pastebin.com/0xGEy8Jh在紙上看起來不錯! –

0

您可以使用標準的jQuery選擇器規則添加到內容是這樣的:

$(".required").rules("add", { 
    required:true, 
    minlength:1 
}); 
+0

都不行這樣的。http://jsfiddle.net/etZbx/ – Sparky

0

您可以將規則應用於谷數據規則屬性。這是最簡單的方法,並可能保持一個乾淨的代碼的最佳方式......

例子:

<input type="text" name="email" data-rule-required="true" data-rule-email="true"> 
<input type="text" name="password" id="passoword" data-rule-required="true" data-rule-minlength="6"> 
<input type="text" name="password-confirm" data-rule-required="true" data-rule-minlength="6" data-rule-equalsto="#password"> 

您甚至可以提供消息穀數據attribures:

<input id="cemail" name="email" data-rule-required="true" data-rule-email="true" data-msg-email="Please enter a valid email address" /> 

在JavaScript只是撥打:

$('#myform').validate();