使用jQuery验证插件

时间:2015-06-01 16:45:33

标签: javascript jquery jquery-validate

只有在输入不为空时,我才能验证输入字段是否具有格式正确的URL。我正在检查输入的值是否为空,如果是,则验证它是否为URL。然而,这似乎奇怪地破坏了我的代码而没有验证。

rules: { 
    domain: {
        required: true
    },
    playerClass: {
        required: true,
    },
    if (adTag.value !== '') {  
        url: true
    }
},

完整示例:JSFIDDLE

2 个答案:

答案 0 :(得分:1)

那是因为你在JS对象的定义中使用了一个表达式。这是不可能的。你可以这样做:

    rules: {
        domain: {
            required: true
        },
        playerClass: {
            required: true,
        },
        adTag: {
            url: adTag.value !== ''
        }
    }

这与您认为代码应该具有的效果略有不同,因为它始终会创建url字段,但它将truefalse取决于adTag.value !== '' }是true

答案 1 :(得分:1)

您正在破坏插件,因为您无法在对象文字中放置条件语句...

rules: {  // <- this is part of an object literal, NOT a function
    domain: {
        required: true
    },
    playerClass: {
        required: true,
    },
    if (adTag.value !== '') {  // <- no good! conditional is outside of a function
        url: true
    }
},

条件语句只能进入函数内部。

rules选项仅采用以逗号分隔的key:value对列表,这些对代表name字段value,其中rules: { domain: { required: true }, playerClass: { required: true, }, adTag: { url: function() { // conditional statement to return true or false } } }, 是其规则。 然后您可以使用函数来构造规则的参数。

可以做这样的事情......

required
  

我需要能够验证输入字段...仅当输入不是空白时。

不使用rules: { domain: { required: true }, playerClass: { required: true, }, adTag: { url: true // only gets evaluated when the field is not empty } }, 规则,已经是默认行为!

col.find().to_a
#          ^^^^

DEMO:http://jsfiddle.net/bk7x129p/1/