繁体   English   中英

通过正则表达式验证多个输入值不起作用

[英]Validate multiple input values trough regular expression doesn't work

我试图通过首先检查它是否为空然后再检查它是否为数字非零值来验证多个输入字段。 这是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');
    }
});

但是由于以下原因,它无法正常工作:

  • 仅检查第一个字段,而不检查其余字段
  • 即使我写字母而不是数字也不会通过正则表达式,因为验证通过了

怎么了?

  • return你做你从传递给回调回报each而且,你回false ,它打破了循环。
  • match从不返回false 请改用test
  • 您尝试将一个类添加到pprice ,这是一个字符串。

您可以这样解决:

var is_valid = true;
$('#variations_holder input.pprice').each(function() {
    pprice = $.trim(this.value);
    if (!pprice.length) {
        alert($(this).prev('label').text() + ' no se puede dejar vacío!!!');
        $(this).focus();
        is_valid = false;
    } else if (!/^[1-9]\d*$/.test(pprice)) {
        $(this).addClass('error');
        is_valid = false;
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM