2016-03-15 82 views
0

有誰知道我怎麼能驗證一個價格格式類似下面的jQuery驗證只有小數

1.00 1200.00,但我也希望能夠爲1和1200

$.validator.addMethod('decimal', function(value, element) { 
     return this.optional(element) || /^[0-9]+\.\d{1,3}$/.test(value); 
    }, "Please enter a correct number, format 0.00"); 

jQuery.validator.setDefaults({ 
     debug: true, 
     success: "valid" 
    }); 

    $("#myform").validate({ 
     rules: { 
      field: { 
       required: true, 
       decimal: true 
      } 
     } 
    }); 

^我發現這個代碼,但它仍然允許使用逗號。基本上我正在尋找像沒有逗號的數字。

所以基本上只想要允許數字和可選小數。

有什麼建議嗎?

更新:所以上述工作,但它迫使小數的要求。如何使可選,所以我可以做1200或1200.00?或者也許有一種方法可以將1200轉換爲1200.00?

+0

從正則表達式的那個'[]'部分刪除逗號。 – Pointy

+0

另外[看到這個問題](http://stackoverflow.com/questions/18082/validate-decimal-numbers-in-javascript-isnumeric?rq=1),這對我來說至少是在「相關「在那裏的部分========> – Pointy

+0

刪除逗號工作。是的,我看到了isNumeric(),但不完全確定如何綁定到$ .validator。我還想確保只輸入1200或1200.00的數字 – limit

回答

1

我爲您解決問題的建議是:

$.validator.addMethod('decimal', function(value, element) { 
 
    return this.optional(element) || /^((\d+(\\.\d{0,2})?)|((\d*(\.\d{1,2}))))$/.test(value); 
 
}, "Please enter a correct number, format 0.00"); 
 

 

 
$(function() { 
 
    $("#frm").on('submit', function(e) { 
 
    e.preventDefault(); 
 
    $('#log').text('Form is valid? ' + $(this).valid().toString()); 
 
    }); 
 

 
    $("#frm").validate({ 
 
    rules: { 
 
     price: { 
 
     required: true, 
 
     decimal: true 
 
     } 
 
    } 
 
    }); 
 
});
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.0/jquery.validate.min.js"></script> 
 

 
<form id="frm"> 
 
    Money: <input name="price" id="price" type="text"><br> 
 
    <input id="submit" type="submit" value="Submit"> 
 
</form> 
 
<p id="log"></p>

+0

太棒了。謝謝,這將工作。 – limit