只允许带有退格和左右箭头的浮点数

时间:2015-02-23 06:29:36

标签: javascript jquery

我想在textfield中只允许一个.,带有退格键,左箭头和右箭头。

我发现了这个链接。

only allow numbers, backspace, delet, left arrow and right arrow keys in textbox

我在上面的代码中添加了一个验证,因此用户只能在textfield中添加.,但它无效。

JS

function validateQty(event) {
    var key = window.event ? event.keyCode : event.which;
if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39 ) {
    if($(this).val().indexOf('.') == -1)
        return true;
    else
        return false;
}
else if ( key < 48 || key > 57 ) {
    return false;
}
else return true;
};

JSFiddle

3 个答案:

答案 0 :(得分:1)

我看到的问题是,在行if($(this).val().indexOf('.') == -1)中,this是Window对象而不是输入控件。

尝试在输入控件中添加ID,并在代码中引用它:

function validateQty(event) {
    var key = window.event ? event.keyCode : event.which;
    if (event.keyCode == 8 || event.keyCode == 46 || event.keyCode == 37 || event.keyCode == 39 ) {
    if($('#IdofInputControl').val().indexOf('.') == -1)
        return true;
    else
        return false;
    }
    else if ( key < 48 || key > 57 ) {
        return false;
    }
        else return true;
    };
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" ID="IdofInputControl" onkeypress='return validateQty(event);'>

你的验证应该有效!

答案 1 :(得分:1)

function isNumber(evt){

    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57)&&(evt.which != 46 || $('#refAmount').val().indexOf('.') != -1)) {
        return false;
    }
    return true;


}

答案 2 :(得分:0)

您可以使用以下代码对要使用或不使用的键进行一些修改。

jQuery("#YourSelector").keypress(function (evt) { 
     var charCode = (evt.which) ? evt.which : evt.keyCode;

     if (charCode != 46 && charCode > 31 && (charCode < 43 || charCode > 57)){
        return false;
     }else{ 
        return true;
     }
});