配置 JQ Validate 以接受没有 http:// 前缀的 URL
Configure JQ Validate to accept URL without http:// prefix
我正在使用 Jquery 验证,我需要一个自定义验证方法。
默认的 URL 方法将不接受 URL 除非它有架构。我的用户只会提供以 http:// 开头的 URL,所以我不想让他们每次都输入它。
我正在尝试创建一个验证方法,它将使用默认的 URL 方法来检查 URL 的有效性。如果失败,我想再次添加 http:// 和 运行 。这是我目前所拥有的:
addCustomUrlValidator: function () {
$.validator.addMethod("short-url", function(value, element) {
if (value.length == 0) return true; // the field is optional
// attempt to validate with default URL method. Return true on valid.
// ...
// prepend http:// to value and attempt validation again. Return true on valid.
// ...
return false
}, jQuery.validator.format("Must be a valid URL format"));
}
I am using Jquery Validate and I need a custom validate method.
请参阅下面的 the .addMethod()
method documentation 了解我们的操作方法。
The default URL method will not accept a URL unless it has a schema. My users will only ever be providing URL's that begin with http://
, so I'd rather not have to put them through the hassle of typing it each time.
我已经从默认 url
方法 inside the plugin 复制了函数本身并编辑了正则表达式,这样您就不需要 URI 方案了。 (我只是删除了正则表达式的 (https?|s?ftp):\/\/
部分。) 请注意,这个新规则称为 my_url
,您可以将其更改为您想要的任何内容。
jQuery.validator.addMethod('my_url', function( value, element ) {
// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
return this.optional( element ) || /^(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value );
}, 'Please enter a valid url without the "http".');
If it fails, I want to prepend http://
and run it again.
提交表单后,您应该在服务器端处理数据。您应该只从自定义方法 return true
或 false
,不操作任何数据,也不以编程方式多次强制相同数据通过相同规则。用户输入了正确的格式或者他没有...用户然后再试一次。
我正在使用 Jquery 验证,我需要一个自定义验证方法。
默认的 URL 方法将不接受 URL 除非它有架构。我的用户只会提供以 http:// 开头的 URL,所以我不想让他们每次都输入它。
我正在尝试创建一个验证方法,它将使用默认的 URL 方法来检查 URL 的有效性。如果失败,我想再次添加 http:// 和 运行 。这是我目前所拥有的:
addCustomUrlValidator: function () {
$.validator.addMethod("short-url", function(value, element) {
if (value.length == 0) return true; // the field is optional
// attempt to validate with default URL method. Return true on valid.
// ...
// prepend http:// to value and attempt validation again. Return true on valid.
// ...
return false
}, jQuery.validator.format("Must be a valid URL format"));
}
I am using Jquery Validate and I need a custom validate method.
请参阅下面的 the .addMethod()
method documentation 了解我们的操作方法。
The default URL method will not accept a URL unless it has a schema. My users will only ever be providing URL's that begin with
http://
, so I'd rather not have to put them through the hassle of typing it each time.
我已经从默认 url
方法 inside the plugin 复制了函数本身并编辑了正则表达式,这样您就不需要 URI 方案了。 (我只是删除了正则表达式的 (https?|s?ftp):\/\/
部分。) 请注意,这个新规则称为 my_url
,您可以将其更改为您想要的任何内容。
jQuery.validator.addMethod('my_url', function( value, element ) {
// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
return this.optional( element ) || /^(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value );
}, 'Please enter a valid url without the "http".');
If it fails, I want to prepend
http://
and run it again.
提交表单后,您应该在服务器端处理数据。您应该只从自定义方法 return true
或 false
,不操作任何数据,也不以编程方式多次强制相同数据通过相同规则。用户输入了正确的格式或者他没有...用户然后再试一次。