2012-02-06 114 views
1

我試圖在JQuery中創建一個自定義的驗證方法,我無法設法使其正常工作。JQuery添加驗證方法來驗證有關另一個元素的形式

這是我想做的事:

<div class="row"> 
    <label for="fld-stories">Stories</label> 
    <select id="fld-stories" class="valid" name="stories" title=""> 
     <option value="">--</option> 
     <option value="1" label="1">1</option> 
     <option value="2" label="2">2</option> 
     <option value="3" label="3">3</option> 
     <option value="4" label="4">4</option> 
     <option value="5" label="5">5</option> 
    </select> 
</div> 

<div id="row_master_bedroom_location" class="row"> 
    <label for="fld-master_bedroom_location">Master Bedroom Location</label> 
    <select id="fld-master_bedroom_location" name="master_bedroom_location" title=""> 
     <option value="up">Upstairs</option> 
     <option value="down">Downstairs</option> 
    </select> 
</div> 

如果用戶選擇主臥室的位置是樓上(見第二選擇),故事的房子數量應大於或等於2 (這是合乎邏輯的,因爲如果只有一個故事,主臥室不能在樓上)。

爲此我嘗試一個自定義的方法添加到我的JQuery驗證:

$.validator.addMethod('masterBedroomLocation', function(value, element, params) { 
    if (value == 'up' && $("#fld-stories").val() < 2){ 
     return false; 
    } 
}, 'You cannot select &quot;Upstairs&quot; for a one&ndash;story home');  

我不知道如何獲取表單另一個元素的值,我試過JQuery的舊時尚之路但它似乎並不奏效。

有關其他信息,我添加了自定義的方法在全球JavaScript文件,在結合了jQuery驗證到有一類特殊的名字每一個表格功能。

+0

而是一個自定義的驗證方法,爲什麼不只需修改相應的選擇列表的選項?在做出選擇之後,用戶不會被呈現不適用的選項會更有意義。 – Sparky 2012-02-07 18:20:35

回答

0

我設法讓它工作。 它看起來像jQuery選擇 $( 「#FLD-故事」) 正常工作。 由於某種原因,我不知道,如果我反轉我做我的支票的方式,並返回true而不是false,該方法有效。

下面是新方法:

$.validator.addMethod('masterBedroomLocation', function(value, element, params) { 
    if (value == 'up' && $("#fld-stories").val() >= 2){ 
     return true; 
    } 
}, 'You cannot select &quot;Upstairs&quot; for a one&ndash;story home'); 
0

我改進我的代碼一點點。 下面是新方法:

$.validator.addMethod('masterBedroomLocation', function(value, element, params) { 
    if($('#fld-master_bedroom_location').val() == 'down'){ 
     return true; 
    } 
    else if($('#fld-master_bedroom_location').val() == 'up' && $("#fld-stories").val() >= 2){ 
     return true; 
    }else{ 
     return false; 
    } 
}, 'You cannot select &quot;Upstairs&quot; for a one&ndash;story home'); 

我希望這可以幫助別人。

相關問題