简体   繁体   中英

jquery validate with if statement in custom method

I am using the validate plugin for jquery and have the following custom method:

$.validator.addMethod("username", function(value, element) {
    if (element.prop("required")) {  
        var re = new RegExp('^([FG]?\\d{5}|\\d{5}[AB])$');
    } else  {
        var re = new RegExp('^'+element.defaultValue+'|^([FG]?\\d{5}|\\d{5}[AB])$');
    }
    return re.test(value);
});

The if statement returns the error element.prop is not a function .

I've also tried $(this).prop... and although I don't get any errors it always runs the else part of the statement.

Is there anything else I can use instead to achieve this??

EDIT:

Here's the call:

$("#myform").validate({
    debug: true,
    ignore: ".ignore",
    rules: {
        field: {
            required: {
                 depends: function() {
                     return $(this).prop("required");
                 }
            },
            username: true,
        }
    },
    messages: {
        field: {
            username: "Enter a valid username"
        }
    },
    success: function(label) {
        label.text("Good result!");
    },
    submitHandler: function() {
        alert("submitted!");
    }
});

我认为你应该使用:

if ($(element).prop("required")) { 

you may be using older jQuery version:

try $(element).attr("required")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM