jquery - 使用 jquery 验证验证国际电话输入

标签 jquery jquery-validate intl-tel-input

极客!

我们都知道一个叫做国际电话输入的很棒的插件,有没有办法将它自己的验证方法 intlTelInput("isValidNumber") 绑定(bind)到 jquery 验证中?

intlTelInput("isValidNumber") returns true if true or false if false

下面还有更多详细信息!:

var handleContactFormValidation = function () {

    var value_form = $('#contact_form');//form i would like to validate where phone field is in!
    var value_error = $('.alert-danger', value_form);
    var value_success = $('.alert-success', value_form);
    value_form.validate({
        errorElement: 'span', //default input error message container
        errorClass: 'help-block help-block-error', // default input error message class
        focusInvalid: false, // do not focus the last invalid input
        ignore: "", // validate all fields including form hidden input
        rules: {                             
            phone: {
                required: {
                    depends: function () {
                            if ($(this).intlTelInput("isValidNumber") == true)
                            return true
                        else
                            return false
                    }
                }
            },

        },

现在,根据结果“isValidNumber”方法返回,我需要将验证输出 {true,false} 传递给 jquery 验证,但上面不起作用

最佳答案

这个验证逻辑没有任何意义......

rules: {                             
    phone: {
        required: {
            depends: function () {
                if ($(this).intlTelInput("isValidNumber") == true)
                    return true
                else
                    return false
            }
        }
    },
},

按照您的编写方式,depends 属性表示,当电话号码有效且phone 字段为必填 时,当电话号码无效时,该字段不是必填。要做出此决定,必须填写该字段。但如果该字段已填写,则 required 规则不再重要。因此,当它只是留空(没有有效的电话号码)时,它不是必需的,并且不会验证任何内容。

如果您想使用国际电话输入插件验证电话号码,则需要write a custom rule using the .addMethod() method调用此外部 .intlTelInput() 方法。

$('#myform').validate({
    .....
    rules: {                             
        phone: {
            required: true,      // field is mandatory
            intlTelNumber: true  // must contain a valid phone number
        },
    },
    ....
});

// create a custom phone number rule called 'intlTelNumber'
jQuery.validator.addMethod("intlTelNumber", function(value, element) {
    return this.optional(element) || $(element).intlTelInput("isValidNumber");
}, "Please enter a valid International Phone Number");
<小时/>

要在不使用国际电话输入插件的情况下执行此操作...

jQuery.validator.addMethod("intlTelNumber", function(phone_number, element) {
    phone_number = phone_number.replace( /\s+/g, "" );
return this.optional( element ) || phone_number.length > 9 &&
    phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/ );
}, "Please enter a valid International Phone Number");

此示例显示美国电话号码的正则表达式。修改它以满足您的特定电话号码要求。提示:查看您的国际电话输入插件中是否有正确的正则表达式。

关于jquery - 使用 jquery 验证验证国际电话输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38994409/

相关文章:

javascript - Sweetalert2 带国际电话输入,键盘问题

angularjs - 设置 $invalid 和 $error 不会使表单无效

javascript - 使用 wp 媒体 uploader 上传文件路径未显示在字段中

面向对象 Javascript 中的 JQuery 小部件事件

jquery - 如何在不指定参数的情况下生成路线

jquery - Twitter Bootstrap 和选择的 jQuery 插件不起作用

jquery 验证插件使用依赖项并设置参数

javascript - 尝试匹配名字标题..或不匹配,视情况而定

jquery - 禁用特定字段的 jquery.validate 功能

javascript - 使用 intlTelInput 获取完整号码