Я хотел проверить на keyup. Поэтому мне нужно было принять 999 999. до того, как была введена первая десятичная позиция (десятые). Но я все еще хотел получить максимум в 2 десятичных (сотых) позициях - предполагая, что в моем коде введено 999,1 == 999,10.
var currencywithcommas = /^(\d+|\d{1,3}(,\d{3})*)+(\.\d{2})?$/;
if ($("#yourelement").val().match(currencywithcommas)) {
// positive match code
}
UPDATE:
Я в конечном итоге с помощью плагина проверки jQuery из-за реализации.
Код прототипа:
jQuery.validator.addMethod("currencywithcommas", function (value, element) {
var currencywithcommasReg = /^(\d+|\d{1,3}(,\d{3})*)+(\.\d{2})?$/;
return this.optional(element) || value.match(currencywithcommasReg);
}, "Must be in US currency format 9.99");
Реализация:
$("#form1").validate({
rules: {
amount1: {
required: true,
currencywithcommas: true
},
...
Та же концепция, но расширенная для использования функциональности проверки.
$(".reqField1").each(function () {
$(this).keyup(function () {
$("#submitButton").prop("disabled", CheckInputs(".reqField1"));
});
});
function CheckInputs(reqfldclass) {
var valid = false;
$(".reqField1").each(function () {
if (valid) { return valid; }
var input = $.trim($(this).val());
valid = !input;
});
return valid;
}
И, Боб, твой дядя ...