在按下按钮时,Javascript中只允许有一个“.”

nwlqm0z1  于 2022-11-20  发布在  Java
关注(0)|答案(4)|浏览(217)

如何在按键期间javascript中只允许一个“.”?
我这里有一个代码:

function allowOneDot(txt) {

        if ((txt.value.split(".").length) > 1) {

          //here, It will return false; if the user type another "."

         } 
}
w9apscun

w9apscun1#

我 会 重申 我 在 答复 前 的 评论 :
如果 用户 在 控制 台 中 编辑 javascript 而 完全 忽略 了 这个 检查 呢 ? 确保 你 正确 地 处理 了 验证 , 而 不是 做 了 太 多 的 简化 。
现在 我们 要 自己 承担 风险 , 下面 是 如何 禁止 用户 在 文本 框 中 键入 多 个 . ( 句点 ) :

document.getElementById('yourTextboxIDHere').onkeypress = function (e) {
    // 46 is the keypress keyCode for period     
    // http://www.asquare.net/javascript/tests/KeyCode.html
    if (e.keyCode === 46 && this.value.split('.').length === 2) {
        return false;
    }
}

中 的 每 一 个
Working demo 的 最 大 值

wfauudbj

wfauudbj2#

如果你真的想允许一个点,即使用户在其中粘贴文本,你应该使用keyup,而不是keypress,你可以保留你最后的文本值,以防你需要恢复它。但缺点是,输入的值已经被更改,你会看到它被纠正,因为你键入。

(function() {
    var txt = document.getElementById('txt');
    var prevValue = txt.value;

    function allowOneDot(e) {
        var dots = 0;
        var length = txt.value.length;
        var text = txt.value;
        for(var i=0; i<length; i++) {
            if(text[i]=='.') dots++;
            if(dots>1) {
                txt.value = prevValue;
                return false;
            }
        }
        prevValue = text;
        return true;
    }
    txt.onkeyup = allowOneDot;
})();
cnwbcb6i

cnwbcb6i3#

在这里,我解决了这个问题的多用途的十进制,数字和alfanumeric。
l是允许的字符串长度。
对于小数,l是允许的小数位。
第一个

atmip9wb

atmip9wb4#

<input type="text" id="test" onkeyup="floatOnly(this);"/>


<script>
function floatOnly(i){
{
  if ((i.value).length > 0){else{i.value = i.value.replace(".." , ".");i.value = i.value.replace("..." , ".");i.value = i.value.replace(/[^0-9\.]/g , "");}}else{i.value = i.value="0";}}<script>

相关问题