2014-02-19 46 views
0

我使用逗號作爲我的輸入表單中的小數點後的指定最大長度:形式輸入逗號

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> 

我想驗證輸入字段只使用逗號作爲小數點分隔符AND允許用戶在逗號後面輸入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 
     } 
    } 
}); 

我已經使用按鍵時逗號更換點。但是,如何防止用戶在逗號後插入兩位以上的小數? JS:

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

您可能會看到的jsfiddle here

+0

每次按鍵之後,我會覺得逗號位置,切一切2個字符後... –

回答

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

您可以使用jQuery Mask

它將成爲,因爲這(樣從他們的網站)一樣簡單:

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

這是一個很好的一個!不是我正在尋找的東西,而是有趣的插件! –

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."); 

感謝