簡體   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