2011-07-21 42 views
0

我有一個select是自定義驗證器方法的目標。每當元素髮生變化時調用jQuery自定義驗證器方法

驗證:

var validator = $("#myform").validate({ 
     rules : { 
      source: "source_selected", 
     }, 
     messages : { 
     }, 
     errorLabelContainer: $("#error_container ul"), 
     errorContainer: $("#error_container"), 
     wrapper : "li"  
    }); 

自定義的驗證方法:

$.validator.addMethod("source_selected", function(value, element) { 
     var source_id = $(element).selectedValues(); 
     if(source_id == 0) { 
      return false; 
     } 

     return true; 
    }, "Please a select a source to Copy subscriptions from."); 

選擇:

<select name="source" id="source"> 
    <option value="0">-- Choose --</option> 
    <? foreach($managers as $id => $name) { ?> 
    <option value="<?=$id?>"><?=$name?></option> 
    <? } ?> 
</select> 

每次我更改選擇source_selected函數被調用的選項。如果我在那裏發出警報,每次點擊選擇框(類似於.blur),都會觸發警報。我希望只有在提交按鈕被調用時纔會調用它。

提交單擊事件:

$("#submit_button").click(function() { 
     var valid = validator.form(); 
     if (valid) { 
      document.myform.submit(); 
     } 
    }); 

任何想法是極大的讚賞。

回答

0

而不是將它作爲驗證程序 - 這對你來說似乎毫無用處 - 只需在onSubmit中調用驗證函數,然後檢查它的返回值。

+0

這不是一個壞主意。我仍然很好奇爲什麼這是失敗的,因爲我使用這種模式到處都是。我的整個網站上大約有十個表單,這樣證實了這一點,這是唯一一個表現得很有趣的表單。 – akronymn

相關問題