我试图通过首先检查它是否为空然后它是否是数字非零值来验证多个输入字段。这是 HTML 代码:
<section style="" id="variations_holder">
<div class="con_var">
<input type="text" class="pupc" name="variation[pupc][]">
<input type="text" class="pprice" name="variation[pprice][]">
<input type="text" class="pqty" name="variation[pqty][]">
<input type="text" class="pupc" name="variation[pupc][]">
<input type="text" class="pprice" name="variation[pprice][]">
<input type="text" class="pqty" name="variation[pqty][]">
</div>
</section>
现在只有两组输入,但可以是三个或更多,例如:
<section style="" id="variations_holder">
<div class="con_var">
<input type="text" class="pupc" name="variation[pupc][]">
<input type="text" class="pprice" name="variation[pprice][]">
<input type="text" class="pqty" name="variation[pqty][]">
<input type="text" class="pupc" name="variation[pupc][]">
<input type="text" class="pprice" name="variation[pprice][]">
<input type="text" class="pqty" name="variation[pqty][]">
<input type="text" class="pupc" name="variation[pupc][]">
<input type="text" class="pprice" name="variation[pprice][]">
<input type="text" class="pqty" name="variation[pqty][]">
</div>
</section>
因为它们是动态生成的。现在这是我为验证我之前所说的内容而编写的 jQuery 代码:
$('#variations_holder input.pprice').each(function() {
pprice = $(this).val();
if (!$.trim(this.value).length) {
alert($(this).prev('label').text() + ' no se puede dejar vacío!!!');
$(this).focus();
is_valid = false;
return false;
}
if (pprice.match('^[1-9]\d*$') === false) {
pprice.addClass('error');
}
});
但由于以下原因,它不起作用:
- 仅检查第一个字段,而不检查其余字段
- 由于验证通过,即使我写字母而不是数字也不检查正则表达式
怎么了?