在 jQuery 验证之前更改数字

Posted

技术标签:

【中文标题】在 jQuery 验证之前更改数字【英文标题】:Change number before jQuery validation 【发布时间】:2021-10-15 14:39:27 【问题描述】:

我可以使用这个函数将arabic号码转换为latin号码:

function toEnglishDigits(str) 

    // convert arabic indic digits [٠١٢٣٤٥٦٧٨٩]
    e = '٠'.charCodeAt(0);
    str = str.replace(/[٠-٩]/g, function(t) 
        return t.charCodeAt(0) - e;
    );
    return str;

console.log(toEnglishDigits("abc[0123456789][٠١٢٣٤٥٦٧٨٩]"));

现在我使用这样的 jQuery 验证插件来验证我的表单:

$(document).ready(function() 
    $("#btnConsult").click(function() 
        jQuery.validator.setDefaults(
            errorElement: "div",
            errorPlacement: function(error, element) 
                error.addClass("invalid-feedback");
                element.closest(".form-group").append(error);
            ,
            highlight: function(element, errorClass, validClass) 
                $(element).addClass("is-invalid");
            ,
            unhighlight: function(element, errorClass, validClass) 
                $(element).removeClass("is-invalid");
            ,
        );
        $("#formConsult").validate(
            rules: 
                phone: 
                    required: true,
                    number: true,
                    minlength: 10,
                    maxlength: 10,
                ,
            ,
        );
    );
);

现在,我需要在使用 jQuery 验证进行验证之前更改 arabic 数字。因为number 规则不适用于arabic 号码。

如何在验证之前将号码从arabic 更改为latin?!

【问题讨论】:

【参考方案1】:

只需在调用validate() 方法之前将数字从Arabic 转换为Latin

const phoneField = $('input[name="phone"]');
phoneField.val(toEnglishDigits(phoneField.val()));

$("#formConsult").validate(
  rules: 
    phone: 
       required: true,
       number: true,
       minlength: 10,
       maxlength: 10,
    ,
  ,
);

【讨论】:

以上是关于在 jQuery 验证之前更改数字的主要内容,如果未能解决你的问题,请参考以下文章

使用 JavaScript / jQuery 进行简单的数字验证

jquery验证数字不起作用

jquery内联验证数字和带字符的数字?

在 javascript 或 jquery 中更改数字的逗号颜色

带有逗号分隔符的数字的正则表达式验证

两个数字的Jquery验证精确长度?