2011-08-02 47 views
2

我使用jQuery驗證插件(http://bassistance.de/jquery-plugins/jquery-plugin-validation/改變驗證

我有以下結構:

<select name="s1" id="s1"> 
    <option value="url">url</option> 
    <option value="normal">normal</option> 
</select> 
<input name="s1_value" id="s1_value" type="text" /> 

現在,我需要驗證規則(使用jQuery驗證插件)作爲

如果我選擇「網址」在列表框中的值,然後輸入字段應該只包含合法的URL

如果我選擇「正常」作爲VALU E在列表框,然後輸入字段可以包含任何文本

對於任何選擇,輸入字段值不能爲空

如何做到這一點?

回答

0

驗證插件允許在每個元素的類中指定規則。你可以用requiredurl規則開始:

<input name="s1_value" id="s1_value" type="text" class="required url" /> 

從那裏,你可以刪除url類,如果列表框中的值變爲normal

$("#s1").change(function() { 
    if ($(this).val() == "url") { 
     $("#s1_value").addClass("url"); 
    } else { 
     $("#s1_value").removeClass("url"); 
    } 
}); 

通過這種方式,驗證插件不會根據url規則驗證字段,因爲它不會在其類中公開該規則。

您可以測試此解決方案here

+0

Frédéric,非常感謝您的解答。 –

0

嗯,我想simpliest解決方案可以只使用http://docs.jquery.com/Plugins/Validation/rules#.22add.22rules規則(「添加」,規則)函數來添加和規則(「刪除」,規則)取決於選擇的選擇值刪除規則。

$("select").change(function(){ 
    if(this.value == "url") { 
    $("input").rules("add",{ 
     url: true 
    }) 
    } 
    if(this.value == "normal") { 
    $("input").rules("remove", "url") 
    } 
}) 
0

你可以一個change事件連接到選擇輸入:

jQuery("#s1").change(function(){ 
    var val = jQuery(this).val(); 
    ... 
}); 

然後該函數內,使用add and remove functions從驗證插件來調整你的規則是必要的。