首页 > 解决方案 > 如何解决页面加载时的按键事件?

问题描述

用鼠标选择时,我无法编辑文本字段。

我尝试在 jquery 中使用 keypress 事件来限制小数点后两位小数。

$('.decimal').keypress(function (e) {
    var character = String.fromCharCode(e.keyCode)
    var newValue = this.value + character;
    if (isNaN(newValue) || parseFloat(newValue) * 100 % 1 > 0) {
        e.preventDefault();
        return false;
    }
});

JSFIDDLE

在这里,当我用鼠标在薪水字段中选择文本时,我在加载时遇到问题我无法编辑该字段,但是在触发按键事件时它可以正常工作。

$(function () {
    $('#name').bind('paste', function () {
        var self = this;
        setTimeout(function () {
            if (!/^[a-zA-Z]+$/.test($(self).val())) $(self).val('');
        }, 0);
    });

    $('#salary').bind('paste', function () {
        var self = this;
        setTimeout(function () {
            if (!/^\d*(\.\d{1,2})+$/.test($(self).val())) $(self).val('');
        }, 0);
    });

    /*$('.decimal').keyup(function () {
        var val = $(this).val();
        if (isNaN(val)) {
            val = val.replace(/[^0-9]./{2,2}/g,'');


             if(val.split('.').length>2) 
                 val =val.replace(/\. + $ / , "");
        }
        $(this).val(val);
    });*/
    
    $('.decimal').keypress(function (e) {
        var character = String.fromCharCode(e.keyCode)
        var newValue = this.value + character;
        if (isNaN(newValue) || parseFloat(newValue) * 100 % 1 > 0) {
            e.preventDefault();
            return false;
        }
    });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<b>Name</b>

<input type="text" id="name" />
<br/>
<b>Salary</b>

<input type="text" id="salary" class="decimal" />

标签: javascriptjquery

解决方案


推荐阅读