在表单输入中指定逗号后的最大长度

时间:2014-02-19 12:50:09

标签: javascript jquery html regex

我在输入表单中使用逗号作为小数点分隔符:

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>

我想验证输入字段只使用逗号作为小数点分隔符并允许用户在逗号后面只键入2位小数(它是一种货币)。

JS:

$.validator.addMethod("mynumber", function (value, element) {
    return this.optional(element) || /^(\d+|\d+,\d{1,2})$/.test(value);
}, "Por favor, introduza um número válido.");

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

我已经使用Keypress用逗号替换了这个点。但是如何防止用户在逗号后插入超过2位小数? JS:

$("#field").keypress(function (evt) {
    if (evt.which == 46) {
        $(this).val($(this).val() + ',');
        evt.preventDefault();
    }
});

您可能会看到JSFiddle here

3 个答案:

答案 0 :(得分:2)

您可以使用jQuery Mask

它将变得如此简单(来自他们网站的样本):

$('.money2').mask("#.##0,00", {reverse: true, maxlength: false});

答案 1 :(得分:2)

$("#field").keypress(function (evt) {
    if (evt.which == 46) {
        $(this).val($(this).val() + ',');
        evt.preventDefault();
    }

    //The input of more than 2 numbers after the decimal point is prevented
    var foo = $(this).val();
    if( !foo.match(/^(\d)*,?(\d){0,1}$/) ){
         evt.preventDefault(); 
    }
});

DEMO

答案 2 :(得分:0)

试试这个。 这必须解决你的问题。

$.validator.addMethod("mynumber", function (value, element) {
return this.optional(element) || /^\d+(\,\d{1,2})?$/.test(value);
}, "Por favor, introduza um número válido.");

由于