Jquery mobile jqueryvalidation规则是否使用或可能?

Jquery mobile jqueryvalidation规则是否使用或可能?,jquery-mobile,jquery-validate,Jquery Mobile,Jquery Validate,我正在创建一个小型jquery移动项目,并决定使用jqueryvalidation进行表单验证。我有一个弹出框,用户在其中输入一个号码,即他们的电话号码或电子邮件号码(不幸的是,由于数据库原因,这个号码必须保持不变),因此我想使用验证来说明该字段必须包含电子邮件:或数字: 你知道这是否可行吗?还是一个解决方案?使用依赖项:在这种情况下也不起作用,因为在每个数据库上都不存在有效的条件(主电话/电子邮件不总是被填写) 类型 数 主要联系人 主电话 主要电子邮件 以及当前的验证: $().rea

我正在创建一个小型jquery移动项目,并决定使用jqueryvalidation进行表单验证。我有一个弹出框,用户在其中输入一个号码,即他们的电话号码或电子邮件号码(不幸的是,由于数据库原因,这个号码必须保持不变),因此我想使用验证来说明该字段必须包含电子邮件:数字:

你知道这是否可行吗?还是一个解决方案?使用依赖项:在这种情况下也不起作用,因为在每个数据库上都不存在有效的条件(主电话/电子邮件不总是被填写)


类型
数
主要联系人
主电话
主要电子邮件
以及当前的验证:

 $().ready(function() {     
                    // validate add number form
                 $("#addNumber").validate({
                        errorPlacement: function(error, element) {
                            error.insertAfter(element.parent()); // <- make sure the error message appears after parent element (after textbox!)
                        },
                        rules: {
                            phoneNumber: "required",
                        },
                        messages: {
                            phoneNumber: "Please enter a valid phone or email",
                        }
                    }); //end validate
                });// end function
$().ready(函数(){
//验证添加号码表单
$(“#addNumber”)。验证({
errorPlacement:函数(错误,元素){

error.insertAfter(element.parent());//在这种情况下,最好的选择是使用编写自己的规则


文档中的简单示例:

jQuery.validator.addMethod("myrule", function(value, element) {
    // return 'true' to pass validation or return 'false' to fail validation
    return this.optional(element) || /^http:\/\/mycorporatedomain.com/.test(value);
}, "Please specify the correct domain for your documents");
要声明此示例规则的标记:

rules: {
    myfield: {
        myrule: true  // only passes validation if "http://mycorporatedomain.com" is entered
    }
}
rules: {
    myfield: {
        myrule: [5,20] // only passes validation if '25' is entered
    }
}

使用参数的文档的简单示例:

jQuery.validator.addMethod("myrule", function(value, element, params) {
    // return 'true' to pass validation or return 'false' to fail validation
    return this.optional(element) || value == params[0] + params[1];
}, jQuery.validator.format("Please enter the correct value for {0} + {1}"));
要声明此示例规则的标记:

rules: {
    myfield: {
        myrule: true  // only passes validation if "http://mycorporatedomain.com" is entered
    }
}
rules: {
    myfield: {
        myrule: [5,20] // only passes validation if '25' is entered
    }
}

this.optional(element)
在这两个示例中,字段条目都是“可选”的。如果您还希望字段
是必需的
,只需删除此部分即可


您可以浏览查看几十个这种方法的实际工作示例。

这是我最后使用的代码,以防其他人可能需要它。.感谢您在这一方面的帮助,sparky

//creating the new rule
//Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to    exclude many premium numbers
jQuery.validator.addMethod('phonesUK', function(phone_number, element) {
phone_number = phone_number.replace(/\(|\)|\s+|-/g,'');
return this.optional(element) || phone_number.length > 9 &&
phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[45789]\d{8}|624\d{6})))$/);
});

//use phonesUK or standard email
jQuery.validator.addMethod("phoneOrEmail", function(value, element) {
return this.optional(element) ||
($.validator.methods["phonesUK"].call(this, value, element)) ||
($.validator.methods["email"].call(this, value, element));
}, "Please enter a valid phone number or email address");

//apply it to my page
    $(document).on("pagecreate", function () {      
                    // validate new number form
                    $("#addNumber").validate({
                        errorPlacement: function(error, element) {
                            error.insertAfter(element.parent()); // <- make sure the error message appears after parent element (after textbox!)
                        },
                        rules: {

                            phoneNumber: 
                                {
                                    phoneOrEmail: true,
                                    required: true,
                                }

                        },
                        messages: {
                            phoneNumber: "Please enter a valid phone number or email address",
                        },

                        //check if valid - post if is
                        submitHandler: function(form) {
                            $('#PopUpAddNumber').popup('close');
                            $.post("customer_AddNewNumber.php", $("#addNumber").serialize(),  function(response)
                            {
                                 LoadCustomerNumber();
                            });

                        }
                    }); //end validate
                                        //reset form after validate
                    $('#addNumberReset').click(function () {
                    $('#addNumber').validate().resetForm();
                    });
                }); // end function
//创建新规则
//匹配英国固定电话+移动电话,固定电话仅接受01-3,移动电话仅接受07,以排除许多高级号码
jQuery.validator.addMethod('phonesUK',函数(电话号码,元素){
电话号码=电话号码。替换(/\(|\)\124;\ s+-/g',);
返回此。可选(元素)| |电话号码。长度>9&&
电话号码。匹配(/^(?:(?:(?:(?:00\s?\+)44\s?| 0)(?:1\d{8,9}{124;[23]\d{9}7(?[45789]\d{8}624\d{6}))$/;
});
//使用phonesUK或标准电子邮件
jQuery.validator.addMethod(“phoneOrEmail”,函数(值,元素){
返回此值。可选(元素)||
($.validator.methods[“phonesUK”].call(this,value,element))||
($.validator.methods[“email”].call(this,value,element));
},“请输入有效的电话号码或电子邮件地址”);
//把它应用到我的页面上
$(document).on(“pagecreate”,函数(){
//验证新号码表单
$(“#addNumber”)。验证({
errorPlacement:函数(错误,元素){

error.insertAfter(element.parent());//感谢您的回复,我刚刚返回验证,所以我将尝试一下:)我发现了一个问题…如果我输入了不正确的数据并更新它,它会显示错误…如果我关闭弹出窗口并重新打开它,它会打开,错误消息仍然在那里,而不是空白。你知道这是什么原因吗?请参阅下面的代码以获取示例。Thakns@Janey,弹出窗口?jQuery Validate没有任何处理弹出窗口。@Janey,我明白了。你必须使用插件的
success
处理程序手动清除弹出窗口。使用与你类似的概念。你需要研究它,并使其适应你的特殊情况…即-Tooltipster与qTip2等不同…这取决于你的弹出插件。但它是一个全新的/不同的iss你需要把它作为一个新问题发布。