jquery 输入字段验证,仅接受逗号或圆点作为小数位

np8igboo  于 2023-02-03  发布在  jQuery
关注(0)|答案(1)|浏览(115)

我想为html输入添加一个验证,以仅接受数字、逗号或小数。这是针对基于欧盟的价格,用户希望以3,22或3.22的格式输入价格。这两种格式都应该被允许。但用户不应该能够输入小数和逗号的组合。我想使用regex来处理这个问题,因为我发现它最合适。

<input class="form-control price_field" type="text" id="article_selling_price" name="article_selling_price">

我发现一个只能处理逗号的JS代码

$(".price_field").on("keyup", checkKey);

function checkKey() {
    var clean = this.value.replace(/[^0-9,]/g, "").replace(/(,.*?),(.*,)?/, "$1");
    
    if (clean !== this.value) this.value = clean;
}

有没有一种方法可以使用类似的东西来达到我的要求?我对regex不太熟悉

mfpqipee

mfpqipee1#

我设法让它以一种不同的方式工作,通过检查charCode和一个keyup函数,用逗号替换圆点。

<input class="form-control price_field" onkeypress="return isNumberKey(this, event);" type="text" id="price_search" name="price_search">

    function isNumberKey(txt, evt) {
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode == 44) {
            //check if previously there was a decimal
            if (txt.value.indexOf('.') > 0) {
                return false;
            }
            //Check if the text already contains the , character
            if (txt.value.indexOf(',') === -1) {
                return true;
            } else {
                return false;
            }
        } else if(charCode == 46){
            //check if previously there was a comma
            if (txt.value.indexOf(',') > 0) {
                return false;
            }
            if (txt.value.indexOf('.') === -1) {
                return true;
            } else {
                return false;
            }
        } else {
            if (charCode > 31 &&
            (charCode < 48 || charCode > 57))
            return false;
        }
        return true;
    }

    $(".price_field").on("keyup", checkKey);

    function checkKey() {
        if (this.value.indexOf('.') > 0) {
            this.value = this.value.replace(".", ",");
        }
    }

相关问题