我很难尝试添加验证器方法来检查URL是否被允许(来自 YouTube 或 Vimeo 使用正则表达式字符串),以及视频是否确实存在于网站上并且不是 404。
到目前为止,我的 URL 验证器与 URL 正确匹配,并尝试使用 oEmbed 测试远程验证:
var vidRegExp = /https?:\/\/(?:[0-9A-Z\-]+\.)?(vimeo\.com\/(clip\:)?(\d+).*|player\.vimeo\.com\/video\/?(\d+).*|(?:youtu\.be\/|youtube\.com\S*[^\w\-\s])([\w\-]{11})(?=[^\w\-]|$)(?![?=&+%\w]*(?:['"][^<>]*>|<\/a>))[?=&+%\w\-]*)/i;
jQuery.validator.addMethod("checkVideoURL", (function(val, elem) {
if (val.length === 0) {
return true;
}
var match = val.match(vidRegExp);
var settings = $('form').validate().settings;
if (match) {
$.extend(true, settings, {
rules: {
item_provider_url: {
remote: {
url: "http://vimeo.com/api/oembed.json",
dataType: "jsonp",
data: {
format: "jsonp",
url: function() {
return $("#item_provider_url").val;
}
}
}
}
},
messages: {
item_provider_url: {
remote: "No video exists at this URL"
}
}
});
} else {
$.validator.messages.checkVideoURL = "The URL you put in is not a valid YouTube or Vimeo URL. Please check your link.";
return false;
}
}), "Invalid URL.");
我一直在 StackOverflow 上寻找正确的方法来寻找正确的方法,但似乎找不到任何有帮助的东西。上面不起作用的是远程验证部分。(例如 404/死链接:http: //vimeo.com/54634709)
此外,由于显然 YouTube 和 Vimeo 有不同的 URL 来检查,我需要知道如何检查匹配的 URL 并为每个不同的站点返回不同的远程 URL。另一个大优点是扩展检查以查看视频是否允许嵌入。
上面的正则表达式字符串适用于所有这些 URL:
http://vimeo.com/50406912
https://vimeo.com/50406912
http://www.vimeo.com/50406912
https://www.vimeo.com/50406912
http://soundcloud.com/forss/flickermood
http://www.youtube.com/v/0zM3nApSvMg?fs=1&hl=en_US&rel=0
http://www.youtube.com/embed/0zM3nApSvMg?rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index
http://www.youtube.com/watch?v=0zM3nApSvMg
http://youtu.be/0zM3nApSvMg
http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
https://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
https://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
http://vimeo.com/36888803
http://vimeo.com/36888803?title=0
http://player.vimeo.com/video/36888803
http://player.vimeo.com/video/36888803?title=0&byline=0&portrait=0
http://youtu.be/i4fjHzCXg6c
http://youtu.be/i4fjHzCXg6c?t=9s
http://www.youtube.com/watch?v=i4fjHzCXg6c
https://www.youtube.com/watch?v=i4fjHzCXg6c&feature=g-logo&t=28s
任何和所有的帮助将不胜感激!