jQuery验证器 - 离开焦点后检查输入字段

时间:2016-01-19 11:28:00

标签: jquery jquery-validate

我想在离开该字段的焦点后检查输入字段inlineViewProvider_ONLYOFFICE_URL是否以https://开头。

到目前为止,这是我的代码:

$(document).ready(function() {

jQuery.validator.addMethod("httpsStarting", function (fieldInput, element) {
    return this.optional(element) || fieldInput.match("^https:\/\/");
}, "Field input should start with 'https://'.");

$('#inlineViewProvider_ONLYOFFICE_URL').validate({
    rules : { inlineViewProvider_ONLYOFFICE_URL: { httpsStarting: true } }
    });
});

如果我将console : console.log($('#inlineViewProvider_ONLYOFFICE_URL'))放在rules值内,则会将字段值打印到控制台。但如果输入字段不以https://开头,则没有错误消息。

3 个答案:

答案 0 :(得分:3)

  

如果输入字段不以https://开头,则没有错误消息。

那是因为您显然已将.validate()方法附加到输入字段而不是form。换句话说,您尚未初始化插件。

$('#inlineViewProvider_ONLYOFFICE_URL').validate({ ....

要初始化插件以使用form,您可以将.validate()附加到jQuery选择器,该选择器代表包含 {{1}的<form> 元素。

inlineViewProvider_ONLYOFFICE_URL

$('#yourForm').validate({ rules: { inlineViewProvider_ONLYOFFICE_URL: { // <- this must represent the NAME attribute httpsStarting: true } } }); 对象中,rules必须是此输入元素的inlineViewProvider_ONLYOFFICE_URL属性的值。

name

有关正确使用的提示,请参阅the Tag Wiki page

工作演示:http://jsfiddle.net/namwLd37/

答案 1 :(得分:1)

只是猜测:

jquery validation documentation关于.validate()谈论

  

描述:验证所选表格。

您的#inlineViewProvider_ONLYOFFICE_URL是表单,还是“只是”输入字段?

答案 2 :(得分:0)

我建议您使用test()代替match()来尝试解决方案。

根据文档,

  

test() 返回布尔值,例如truefalse

然而,

  

match() 会返回包含匹配结果的数组,如果没有匹配则返回null

所以null在这里意味着false

这可能是IMO的原因。

jQuery.validator.addMethod("httpsStarting", function (fieldInput, element) {
    return this.optional(element) || /^https?:\/\//i.test(fieldInput);
}, "Field input should start with 'https://'.");

这是我现在可以通过查看片段来建议的。如果它不起作用,请告诉我。