在 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 验证之前更改数字的主要内容,如果未能解决你的问题,请参考以下文章