2012-09-18 40 views
0

我有這樣的形式:如何在此函數中包含選擇字段的驗證?

<form> 
<fieldset> 
<legend>Address Information</legend> 

<div> 
<label for="country">Country:</label> <span id="country-list"> 
<select name="country" class="required"> 
<option value="0">Please Select</option> 
<option value="1">Afghanistan</option> 
<option value="2">Albania</option> 
<option value="3">Algeria</option> 
<option value="4">American Samoa</option> 
</select>&nbsp;</span> 
<span class="error_msg" style="display: none; "> 
<br><label for="space">&nbsp;</label>Please select your country.</span> 
</div> 

<div> 
<label for="street-address">Street Address:</label> <input type="text" id="street_address" name="street_address" value="" size="50" class="required"> 
<span class="error_msg" style="display: inline; "><br><label for="space">&nbsp;</label>Please enter your accurate street address (at least 7 characters)</span> 
</div> 

<div> 
<label for="suburb">Suburb:</label> <input type="text" name="suburb" value="" class="required"> 
</div> 

<div> 
<label for="city">City:</label> <input type="text" id="city" name="city" value="" class="required"> 
<span class="error_msg" style="display: inline; "><br><label for="space">&nbsp;</label>Please enter your city (at least 4 characters)</span> 
</div> 

<div> 
<label for="post-code">Post Code:</label> <input type="text" id="postcode" name="postcode" value="" class="required"> 
<span class="error_msg" style="display: inline; "><br><label for="space">&nbsp;</label>Please enter your postal code (at least 3 characters)</span> 
</div> 

</fieldset> 
</form> 

下面我有一個jQuery函數時提交被點擊,它只是檢查input text fields但不能選擇字段。如果字段有值,它將返回true;如果有一個沒有值的字段,則返回false。

function ValidateForm() 
{ 
    jQuery('span.error_msg').hide(); 
    var success = true; 

    jQuery("#shippingF .required").each(function() 
     { 
      if(jQuery(this).val().length <= 2) 
      { 
       jQuery(this).next().show(); 
       success = false; 
      } 
    }); 

    return success; 
} 

如何在此簡單驗證功能中包含選擇字段?

回答

0

OK,對不起,我是在原碼甩出一些錯誤,這裏是最後的工作版本

function ValidateForm() 
{ 
jQuery('span.error_msg').hide(); 
var success = true; 

if($('select[name=country]').val() == '0'){ 
    success = false; 
    } 
    jQuery(".required").each(function() 
     { 
     if(jQuery(this).val().length <= 2) 
     {alert(jQuery(this).val().length); 
      jQuery(this).next().show(); 
      success = false; 
     } 
}); 

return success; 
} 

上的原代碼有兩點要注意:

  1. 未能進行找到選擇器Id shippingF,所以我必須刪除該類和參考類.required,如果您定義在層次結構中的某個地方,那麼它應該很好

  2. 從select元素中刪除了類.required,因此它不會包含在每個循環中。這將始終返回1並導致if語句if(jQuery(this).val().length <= 2) 失敗。

這裏是一個working fiddle

+0

這將只是首先檢查選擇字段。如果選擇字段具有「0」值並且其他字段爲空,該怎麼辦?那麼只會顯示選擇字段的錯誤消息,而不會顯示每個空輸入字段的錯誤消息。 – Ken

+0

請檢查更新的解決方案 – hsalama

0

可以包括其他評估進入循環,檢查其一個選擇:

function ValidateForm() 
{ 

    jQuery('span.error_msg').hide(); 
    var success = true; 

    jQuery("#shippingF .required").each(function() 
    { 

     if(jQuery(this).hasClass('select')) { 
      if(jQuery(this).val() == 0) { 
      success = false; 
      } 
     } else { 
      if(jQuery(this).val().length <= 2) { 
      jQuery(this).next().show(); 
      success = false; 
      } 
     } 
    }); 
    return success; 
} 

類似的規定。

+0

不工作,先生。只有輸入字段正在驗證中。 – Ken

相關問題