我有这样的表格:
<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> </span>
<span class="error_msg" style="display: none; ">
<br><label for="space"> </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"> </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"> </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"> </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字段?
答案 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;
}
关于原始代码的几点说明:
无法找到选择器ID shippingF
,因此我必须删除该类.required
的引用,如果您在层次结构中的某处定义那么它应该没问题
从select元素中删除了类.required
,因此它不会包含在每个循环中。这将始终返回1并导致您的if语句if(jQuery(this).val().length <= 2)
失败。
答案 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;
}
这些方面的东西。