2012-02-28 74 views
1

我無法讓jquery.validation.js驗證選擇框。它正在處理文本輸入,但不會顯示選擇的錯誤消息。如果我完成對文本輸入的驗證,它會提交。有沒有人看到我在這裏失蹤?jQuery驗證插件未驗證選擇框

<form name="consumerRegistration" id="consumerRegistration" action="" method="post"> 
    <label for="name" class="baseline-10">Full Name</label> 
    <input type="text" name="name" id="name" class="required" placeholder="John Doe" min-length="2"/> 
    <label for="email" class="baseline-10">Email</label> 
    <input type="text" name="email" id="email" class="required email" placeholder="[email protected]"/> 
    <label for="company" class="baseline-10">Company</label> 
    <input type="text" name="company" id="company" placeholder="ie. Yahoo"/> 
    <select name="country" id="country" class="required" required="required"> 
     <option selected="" val="" disabled="disabled">Country</option> 
     <option val="United States">United States</option> 
     <option val="Canada">Canada</option> 
    </select> 
    <a href="javascript:document.void(1);" title="Register" class="cta"><span>Register</span></a> 

(function($){ 
if($('form#consumerRegistration').length){ 
    $('input').placeholder(); 
    $('form#consumerRegistration').find('a').on('click', function(e){ 
     e.preventDefault(); 
     if($('form#consumerRegistration').valid()){ 
      $('form#consumerRegistration').submit(); 
     } else { 
      return false; 
     } 
    }); 
} 
})(jQuery); 

如果我已經錯過了在現場的解決方案別的地方,我發誓我看着操作裝配。 :)

該插件是從http://bassistance.de/jquery-plugins/jquery-plugin-validation/

+0

好了,我不知道什麼是錯的,而不從jquery.validation.js看到代碼。所以也許你應該在你的問題中加上這個。 – 2012-02-28 00:19:28

+0

對不起,我已經添加了一個鏈接到插件主頁,但我沒有在這裏包含代碼,因爲它看起來像1100行可能是矯枉過正。 – jayseeg 2012-02-28 00:33:08

+0

感謝您的清理Glenn;] – jayseeg 2012-02-28 00:51:16

回答

2

好的,你的問題是你沒有真正使用jquery驗證正確。你需要做的是更多這樣的:

首先,設置上的document.ready驗證,如果你不這樣做,它不會驗證表單任何其他方式:

$('form#consumerRegistration').validate(...//options here 

接下來,爲您的a元素click事件,只是提交表單(驗證,然後會做它的東西)

$('form#consumerRegistration').find('a').on('click', function(e){ 
    $('form#consumerRegistration').submit(); 
}); 

最後,你的選擇沒有被正確處理,你有沒有指定的原因其屬性正確。簡單地說,val不是您的選項的正確屬性,value是。因此,只要改變,在所有選項:

<option selected="" value="" disabled="disabled">Country</option> 
    <option value="United States">United States</option> 
    <option value="Canada">Canada</option> 

這是工作:http://jsfiddle.net/ryleyb/TTpSB/

+0

我現在正在毆打自己,我不能相信我這麼久沒有接受這個錯誤命名的屬性。感謝您瞭解這一點,我也會嘗試其他修補程序。 – jayseeg 2012-02-28 16:31:49

+0

^5。我是一個「val」問題的白癡,但我很高興它阻止了驗證,因爲它使用了正確的屬性,但我從來沒有意識到我錯誤地實現了插件。 – jayseeg 2012-02-28 18:35:19

+0

@jayseeg哈,我認爲每個程序員都會偶爾做這樣的事情...... – Ryley 2012-02-28 20:14:01

0

jQuery驗證插件需要選擇第一個選項是空白,以驗證它們。 例如:你的選擇框應類似於以下:

<select name="country" id="country" class="required"> 
     <option></option> 
     <option val="United States">United States</option> 
     <option val="Canada">Canada</option> 
</select>