2010-08-04 154 views
6

我很難讓jQuery驗證插件按我的需要工作。請與我裸露,因爲我沒有JQ專家:).valid()只驗證jQuery驗證插件的第一個輸入

我所擁有的是幾個所需輸入的形式,規則如下顯示:

$("#makeEvent").validate({ 
    onfocusout: false, 
    rules: { 
     name: { 
      required: true, 
      minLength: 2, 
      maxLength: 100 
     }, 
     host: { 
      required: true, 
      minLength: 2, 
      maxLength: 100 
     }, 
     startDate: { 
      required: true, 
      date: true 
     }, 
     endDate: { 
      required: true, 
      date: true 
     }, 
     desc: { 
      required: true, 
      minLength: 10, 
      maxLength: 255 
     }, 
     webpage: { 
      required: false, 
      url: true 
     }, 
     email: { 
      required: true, 
      email: true 
     }, 
    } 
}); 

現在我有一個自定義的。點擊()調用在那裏我想驗證表單,然後在允許他們發送表單之前顯示用戶的預覽。請參閱下面的功能:

$('#submitPreview').click(function() { 
    if($("#makeEvent").valid() === false) { 
     //What to do if validation fails 
    } else if($("#makeEvent").valid() === true) { 
     //Show the preview and let the user either make changes or submit the final result 
    } 
}); 

但是,什麼情況是,該功能僅驗證第一輸入(名稱),甚至驗證它錯誤地(規則最少需要2個字符,它仍然只用1個字符驗證如果沒有添加任何字符,它只會返回false)。

也許我的方法並不是最好的,所以我都樂於接受任何建議。如果你想看看凌亂的源代碼,你可以看到這裏的功能:http://event.gusthlm.se/make.php

謝謝!

回答

19

我可以看到的兩個問題是,您沒有在輸入字段上使用name屬性,並且您使用name作爲其中一個ID(導致表單提交時IE的各種悲傷)。

我建議將名稱屬性的輸入,選擇和textarea元素和不斷變化的「名」,以類似「thename」:

<label for="thename">Börjar</label> 
<input type="text" name="thename" id="thename"/> 
+0

你猜怎麼着?這解決了這個問題。我永遠都不會猜到......謝謝! – 2010-08-04 16:11:57

+0

我知道這是舊的,但我有一個問題,我不能有名稱字段。我使用Stripe驗證信用卡,並保持信用卡信息不會觸及我們的服務器,因此我們必須排除name屬性。我也很好奇爲什麼name屬性對客戶端驗證有任何影響? – computrius 2012-11-05 14:53:23

+0

@computrius,因爲jQuery Validate插件需要'name'屬性......開發者決定插件應該跟蹤輸入的方式。 – Sparky 2013-06-26 17:08:51

相關問題