如何在此函数中包含选择字段的验证?

时间:2012-09-18 03:19:08

标签: jquery forms

我有这样的表格:

<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而不选择选择字段。如果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;
}

如何在这个简单的验证函数中包含select字段?

2 个答案:

答案 0 :(得分:0)

好的,抱歉我被原始代码中的一些错误所抛弃,这是最终的工作版本

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) 失败。

  3. 这是working fiddle

答案 1 :(得分:0)

您可以在循环中包含另一个评估,并检查它是否为select:

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;
}

这些方面的东西。