Плагин проверки jQuery: проверка десятичного числа с запятой как десятичным разделителем

HTML:

<form id="myform">
    <label for="field">Required, decimal number:</label>
    <input class="left" id="field" name="field">
    <br/>
    <input type="submit" value="Validate!">
</form>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://jquery.bassistance.de/validate/jquery.validate.js"></script>
<script src="http://jquery.bassistance.de/validate/additional-methods.js"></script>
<script>

JS:

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

Это требует действительного числа в поле "поле". Однако при использовании запятой в качестве десятичного разделителя она не работает. Например: 10,25 не считается действительным числом.

Я взял этот пример из плагина проверки. Здесь вы также можете увидеть живой JSFiddle.

Я думаю, мне придется преобразовать вход (от запятой до десятичного разделителя) до его проверки, но как?

Ответ 1

Вы можете использовать правило шаблона для передачи пользовательского шаблона регулярного выражения, например

$("#myform").validate({
    //for debug only
    debug: true,
    rules: {
        field: {
            required: true,
            pattern: /^(\d+|\d+,\d{1,2})$/
        }
    },
    messages: {
        field: {
            pattern: 'Please use the proper pattern'
        }
    }
});

Демо: скрипка


Если это повторяющийся шаблон, создайте правило пользовательской проверки

jQuery.validator.addMethod("mynumber", function (value, element) {
    return this.optional(element) || /^(\d+|\d+,\d{1,2})$/.test(value);
}, "Please specify the correct number format");

$("#myform").validate({
    //for debug only
    debug: true,
    rules: {
        field: {
            required: true,
            mynumber: true
        }
    }
});

Демо: скрипка