2009-06-20 44 views
3

是的,基本上,我正在構建一個Web窗體,需要提供不同的所需的形式和驗證功能休耕所選國家。Jquery驗證插件和切換所需字段

我使用

<script type="text/javascript" src=" jquery-1.3.2.min.js" charset="utf-8"></script> 
<script type="text/javascript" src=" jquery.validate.js" charset="utf-8"></script> 

這裏是我的JS代碼

<script type="text/javascript" charset="utf-8"> 
function updatRequreForm (STATE,ZIPCODE) { 
    $("#frm_verification").validate({ 
      rules: { 
       'form[country]' : "required", 
       'form[state]' : {required: STATE}, 
       'form[zip]': {required: ZIPCODE}, 
       }, 

      messages: { 
       'form[country]' : "This field is required.", 
       'form[state]' : "This field is required.", 
       'form[zip]': "This field is required.", 
     }); 
}; 


function setRequreForm() { 
    var _cs = $('#country_select')[0]; 

    if ('US' != _cs.value) 
    { 
     $('#state_star')[0].innerHTML = ''; 
     $('#zip_star')[0].innerHTML = ''; 
     updatRequreForm (false,false); 
    } 
    else 
    { 
     $('#state_star')[0].innerHTML = '*'; 
     $('#zip_star')[0].innerHTML = '*'; 
     updatRequreForm (true,true); 
    } 
};  


$(document).ready(function() { 
    setRequreForm(); 
    $('#country_select').change(function(){ 
     setRequreForm(); 
    }); 
}); 

</script> 

這裏是我的HTML:

<form id="frm_verification" action="some.php" method="POST"> 

<label for="country_select"><sup>*</sup>Country:</label> 
<select name="form[country]" id="country_select"> 
    <option value="">- Select -</option> 
    <option value="US" selected="selected">United States</option> 
    <option value="ZM">Zambia</option> 
    <option value="ZW">Zimbabwe</option> 
</select> 


<label for="select-state"><sup id="state_star">*</sup>State/Province/Region:</label> 
    <span id="states_select"> 
     <select id="select-state" name="form[state]"> 
      <option value="">- Select -</option> 
      <option value="AK">Alaska</option> 
     </select> 
    </span> 

    <span id="states_text" style="display:none;"> 
    <input type="text" name="form[state]" value="" id="state" /> 
    </span> 

<label for="zip_code"><sup id="zip_star">*</sup>ZIP/Postal Code:</label> 
<input type="text" id="zip_code" name="form[zip]" value="" id="zip"> 

<input type="submit" value="Submit" id="submit_btn" class="submit"> 
</form> 

巴sically,我需要創建的是:

1.When user select US on country selection, the State and Zip area become required. 
2.When user select Zambia on country selection, the State and Zip area become non-required. 

問題

當我第一次加載頁面,然後點擊空場的提交按鈕時,表單成功驗證各個領域,並顯示警告。然而,選擇贊比亞,驗證不起作用。

猜測

我已刪除「setRequreForm();」關於準備功能,如:

$(document).ready(function() { 
    //setRequreForm(); 
    $('#country_select').change(function(){ 
     setRequreForm(); 
    }); 
}); 

並試圖選擇贊比亞,並試圖驗證表單和它的作品。所以我認爲兩次調用「validate()」會導致錯誤。 好吧,我堅持了一段時間。請幫我弄清楚,我真的很感激。

回答

5

您不能調用驗證超過一個,因爲您運行驗證插件不止一個,這會導致錯誤。

你可以設置你的驗證程序是這樣的:

$("#myform").validate({ 
    ignore: ".ignore" 
}) 

忽略告訴給驗證:它有忽略CSS類字段不應該被驗證。

當你改變的需求,那麼添加到指定字段的CSS類 「忽略」:

$("#field1").addClass("ignore"); 

否則刪除此類:

$("#field2").removeClass("ignore"); 
+0

謝謝,它的工作原理。 ;-) – chris 2009-06-25 03:22:06