具有相同类名的输入上的按键,键盘和更改事件

时间:2014-11-19 15:08:52

标签: javascript jquery

我有一个表,其中第一行是所有文本输入,共享相同的类名。我想设置验证,以便用户只输入浮点数。有谁知道我在下面的代码中可能缺少什么? $('输入。' + classname)或$(' .classname)在调用floatTextField()函数时不会触发任何事件

HTML code:

<td><div class="input-group"><input type="text" class="form-control myclass" value="2.8"></div> </td>

JavaScript代码:

floatTextField('myclass');
function floatTextField(classname) {
    $('input.' + classname).keypress(function (event) {
        var charCode = (event.which) ? event.which : event.keyCode;
        if (event.which == 0)//common keys
            return true;
        var value = $(this).val();
        if (charCode == 45 && value.indexOf('-') != -1) {
            return false;
        }
        else if (charCode == 46 && value.indexOf('.') != -1)
            return false;
        else if (charCode != 46 && charCode != 45 && charCode > 31 && (charCode < 48 || charCode > 57))
            return false;
        return true;
    });
    $('input.' + classname).keyup(function (event) {
        var value = $(this).val();
        if (value <= 0 && value.indexOf('.') == -1 && value.indexOf('-') == -1) {
            $(this).val('');
        }
        if (value.indexOf('-') > 0) {
            value = value.replace('-', '');
            $(this).val(value);
        }
    });
    $('input.' + classname).change(function (event) {
        var value = $(this).val();
        if (value.indexOf('.') == 0) {
            value = '0' + value;
            $(this).val(value);
        }
    });
}

1 个答案:

答案 0 :(得分:1)

您必须使用$(document).ready()方法,如下所示:

function floatTextField(classname) {
    $('input.' + classname).keypress(function (event) {
        var charCode = (event.which) ? event.which : event.keyCode;
        if (event.which == 0)//common keys
            return true;
        var value = $(this).val();
        if (charCode == 45 && value.indexOf('-') != -1) {
            return false;
        }
        else if (charCode == 46 && value.indexOf('.') != -1)
            return false;
        else if (charCode != 46 && charCode != 45 && charCode > 31 && (charCode < 48 || charCode > 57))
            return false;
        return true;
    });
    $('input.' + classname).keyup(function (event) {
        var value = $(this).val();
        if (value <= 0 && value.indexOf('.') == -1 && value.indexOf('-') == -1) {
            $(this).val('');
        }
        if (value.indexOf('-') > 0) {
            value = value.replace('-', '');
            $(this).val(value);
        }
    });
    $('input.' + classname).change(function (event) {
        var value = $(this).val();
        if (value.indexOf('.') == 0) {
            value = '0' + value;
            $(this).val(value);
        }
    });
}

$(document).ready(function(){
  floatTextField('myclass');
});