我想在离开该字段的焦点后检查输入字段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://
开头,则没有错误消息。
答案 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。
答案 1 :(得分:1)
只是猜测:
jquery validation documentation关于.validate()
谈论
描述:验证所选表格。
您的#inlineViewProvider_ONLYOFFICE_URL
是表单,还是“只是”输入字段?
答案 2 :(得分:0)
根据文档,
test() 返回布尔值,例如
true
或false
。
然而,
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://'.");
这是我现在可以通过查看片段来建议的。如果它不起作用,请告诉我。