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

jQuery验证器-离开焦点后检查输入字段,jquery,jquery-validate,Jquery,Jquery Validate,我想检查输入字段inlineViewProvider\u only office\u URL在离开字段焦点后是否以https://开头 以下是我目前的代码: $(document).ready(function() { jQuery.validator.addMethod("httpsStarting", function (fieldInput, element) { return this.optional(element) || fieldInput.match("^https:

我想检查输入字段
inlineViewProvider\u only office\u 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\u ONLYOFFICE\u URL”)
放在
规则
值中,字段值将打印到控制台。但是,如果输入字段不是以https://开头,则不会出现错误消息。我建议您尝试使用而不是

根据文件

返回布尔值,例如
true
false

鉴于

返回包含匹配结果的数组,如果不存在匹配项,则返回
null

所以
null
在这里表示
false

这可能是原因

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

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

我建议您尝试使用代替的解决方案

根据文件

返回布尔值,例如
true
false

鉴于

返回包含匹配结果的数组,如果不存在匹配项,则返回
null

所以
null
在这里表示
false

这可能是原因

jQuery.validator.addMethod("httpsStarting", function (fieldInput, element) {
    return this.optional(element) || /^https?:\/\//i.test(fieldInput);
}, "Field input should start with 'https://'.");
这是我在这一点上通过查看代码片段所能给出的建议。如果它不起作用,请告诉我。

只是一个猜测:

about
.validate()
讨论

描述:验证所选表单

您的
#inlineViewProvider\u ONLYOFFICE\u URL是表单还是“只是”输入字段?

只是一个猜测:

about
.validate()
讨论

描述:验证所选表单

您的
#inlineViewProvider\u ONLYOFFICE\u URL
是表单还是“只是”输入字段

如果输入字段不是以
https://
开头,则不会出现错误消息

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

$('#inlineViewProvider_ONLYOFFICE_URL').validate({ ....
要初始化插件以处理
表单
,您需要将
.validate()
附加到一个jQuery选择器,该选择器表示包含
inlineViewProvider\u ONLYOFFICE\u URL
元素的

$('#yourForm').validate({
    rules: { 
        inlineViewProvider_ONLYOFFICE_URL: { // <- this must represent the NAME attribute
            httpsStarting: true 
        } 
    }
});
有关正确使用的提示,请参阅


工作演示:

如果输入字段不是以
https://
开头,则不会出现错误消息

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

$('#inlineViewProvider_ONLYOFFICE_URL').validate({ ....
要初始化插件以处理
表单
,您需要将
.validate()
附加到一个jQuery选择器,该选择器表示包含
inlineViewProvider\u ONLYOFFICE\u URL
元素的

$('#yourForm').validate({
    rules: { 
        inlineViewProvider_ONLYOFFICE_URL: { // <- this must represent the NAME attribute
            httpsStarting: true 
        } 
    }
});
有关正确使用的提示,请参阅



工作演示:

'因为您可能在填写任何文本之前在准备就绪时验证了空字段。将验证移到字段的onChange,您是否阅读了验证插件文档
onfocusout
onkeyup
均默认启用如果消息以https://
开头,您会收到消息吗?因为您可能在填写任何文本之前验证了空字段onReady。将验证移到字段的onChange,您是否阅读了验证插件文档
onfocusout
onkeyup
均默认启用如果它以https://开头,你会收到消息吗?嗯,根本不起作用。我还尝试在
validate
方法中放入
onfocusout:true
,但没有成功。实际上,
validate
中的标识符被设置为一个输入字段id-也许我必须将其更改为整个html表单id。好的,尝试将
validate({})
附加到html表单id,而不是特定的表单字段。细节对我来说是抽象的,您还有什么可以分享的线索吗?好的,表单id也不起作用。如果我在自定义验证器中放入
console.log(“Foo”)
,则没有控制台输出。似乎根本不会调用自定义验证器。
.match()
.test()
都在各种方法中使用,所以我认为这不是真正的问题。OP需要初始化插件,否则什么都不会发生。嗯,根本不起作用。我还尝试在
validate
方法中放入
onfocusout:true
,但没有成功。实际上,
validate
中的标识符被设置为一个输入字段id-也许我必须将其更改为整个html表单id。好的,尝试将
validate({})
附加到html表单id,而不是特定的表单字段。细节对我来说是抽象的,您还有什么可以分享的线索吗?好的,表单id也不起作用。如果我在自定义验证器中放入
console.log(“Foo”)
,则没有控制台输出。似乎根本不会调用自定义验证器。
.match()
.test()
都在各种方法中使用,所以我认为这不是真正的问题。OP需要初始化插件,否则什么都不会发生。啊,我错过了那个。很酷,它帮助我在脑海中再次刷新了这个概念:)啊,我错过了那个。很酷,它帮助我在脑海中再次刷新了这个概念:)