在 jQuery 验证之前更改号码

Change number before jQuery validation

我可以使用此函数将 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?!

只需在调用 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,
    },
  },
});