在Textfield中仅允许Integer和Float值

时间:2013-10-31 07:02:30

标签: javascript jquery

我有价格的文字字段。

我只想要Integer和Float值。

我做了整数。但它不接受Float值,如:3110.6

这是我的代码DEMO

JS:

$(document).ready(function () {
    $("#price").keydown(function (event) {
        // Allow only backspace and delete
        if (event.keyCode == 46 || event.keyCode == 8) {
            // let it happen, don't do anything
        } else {
            // Ensure that it is a number and stop the keypress
            if (event.keyCode < 48 || event.keyCode > 57) {
                event.preventDefault();
            }
        }
    });
});

HTML:

<input name="price" type="text" id="price">

4 个答案:

答案 0 :(得分:2)

试试这个demo

 $('#price').keypress(function(event) {
            if(event.which == 8 || event.which == 0){
                return true;
            }
            if(event.which < 46 || event.which > 59) {
                return false;
                //event.preventDefault();
            } // prevent if not number/dot

            if(event.which == 46 && $(this).val().indexOf('.') != -1) {
                return false;
                //event.preventDefault();
            } // prevent if already dot
        });

答案 1 :(得分:1)

只需使用:

<input name="price" type="number" id="price">

删除您的JavaScript代码。

答案 2 :(得分:1)

尝试正则表达式

/^[+-]?\d+(\.\d+)?$/

只需测试onchange事件的输入值。

答案 3 :(得分:0)

TRy Demo点或句点具有键码190

$(document).ready(function() {
$("#price").keydown(function(event) {
    // Allow only backspace and delete
    if ( event.keyCode == 46 || event.keyCode == 8 ||  event.keyCode == 190 ) {
        // let it happen, don't do anything
    }
    else {
        // Ensure that it is a number and stop the keypress
        if (event.keyCode < 48 || event.keyCode > 57 ) {
            event.preventDefault(); 
            }   
        }
    });
});

但最好在http://jqueryvalidation.org/使用jquery验证器插件,因为你不必自己检查。

对于jquery版本,请参阅JQUERY VALIDATION