首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在文本框的按键中限制2个小数位?

在文本框的按键中限制2个小数位?
EN

Stack Overflow用户
提问于 2018-05-08 07:22:00
回答 2查看 0关注 0票数 0

我想在文本框中输入小数点。我想通过在小数点后输入2位以上的数字来限制用户。我已经编写了用于在Keypress事件中实现该功能的代码。

代码语言:javascript
复制
function validateFloatKeyPress(el, evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode;

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

    if (charCode == 46 && el.value.indexOf(".") !== -1) {
        return false;
    }

    if (el.value.indexOf(".") !== -1)
    {
        var range = document.selection.createRange();

        if (range.text != ""){
        }
        else
        {
            var number = el.value.split('.');
            if (number.length == 2 && number[1].length > 1)
                return false;
        }
    }

    return true;
}
<asp:TextBox ID="txtTeamSizeCount" runat="server" onkeypress="return validateFloatKeyPress(this,event);" Width="100px" MaxLength="6"></asp:TextBox>

代码正在工作,但问题是:如果我输入“.75”,然后将其更改为“1.75”,则不可能。只有这样才能完全删除它,然后输入“1.75”。如果文本框中的小数点后有2位数字,则会出现此问题。我施加的条件是

a)十进制出现后,它必须至少有1或2位数字。例如,75或.7或10.75或333.55或333.2被接受。但不是.753或12.3335 b)小数点之前,用户不一定要输入数值。用户还必须能够输入整数。

你能告诉我可能是什么问题吗?

EN

回答 2

Stack Overflow用户

发布于 2018-05-08 15:35:09

你几乎在那里。只需检查小数点后面是否不超过2个字符。

function validateFloatKeyPress(el, evt) { var charCode = (evt.which) ? evt.which : event.keyCode; var number = el.value.split('.'); if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) { return false; } //just one dot (thanks ddlab) if(number.length>1 && charCode == 46){ return false; } //get the carat position var caratPos = getSelectionStart(el); var dotPos = el.value.indexOf("."); if( caratPos > dotPos && dotPos>-1 && (number[1].length > 1)){ return false; } return true; } //thanks: http://javascript.nwbox.com/cursor_position/ function getSelectionStart(o) { if (o.createTextRange) { var r = document.selection.createRange().duplicate() r.moveEnd('character', o.value.length) if (r.text == '') return o.value.length return o.value.lastIndexOf(r.text) } else return o.selectionStart }

票数 0
EN

Stack Overflow用户

发布于 2018-05-08 16:45:09

你可以通过另一种方式使用onchange事件来做到这一点,不要限制用户输入,而只需要在输入后转换数字

代码语言:javascript
复制
function validateFloatKeyPress(el) {
    var v = parseFloat(el.value);
    el.value = (isNaN(v)) ? '' : v.toFixed(2);
}
代码语言:javascript
复制
<input id="aninput" type="text" onchange="validateFloatKeyPress(this);" />

45.846应该是45.85在你的代码用户需要转换他们自己,然后他们将45.85直接键入

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档