我使用jquery构建了以下代码。当用户复制并粘贴一个YouTube网址时,我想提取视频ID是jQuery中的getVideoId(str)方法。使用id,我可以获得视频图像的图像标题和内容。jquery发送了太多的ajax请求
当textbox - >(“#url”)的长度超过10时,我会发出ajax请求。因此,Ajax请求正在工作。但现在我有另一个问题。第一次当文本框超过10个字符时,有两个Ajax请求被触发(使用萤火虫测试)。比用户输入更多字符时,有许多ajax请求被触发。
因此,这将减慢最后一次ajax请求的进程。我只想获取YouTube链接的数据并显示用户可以添加标题和内容的建议。这就像旧的Facebook视频视频链接。任何人在改进代码方面都有更好的建议?
jQuery(document).ready(
function(){
$("#url").keyup(function() {
var $t1 = $("#url").val();
var $length = $t1.length;
var $data;
$("#title").val($length);
$("#content").val($t1);
if($length==0){
alert('zero value');
return;
}
if($length>10){
$data = $.ajax({
url: '<?php echo $this->Html->url(array("action" => "retrieveVideoFeed"));?>',
dataType: "json",
data: {
vid: getVideoId($t1)
},
success: function(data) {
alert('success in getting data');
}
});
return;
}
});
function getVideoId(str) {
var urlRegex = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
if (urlRegex.test(str) && str.indexOf('v=') != -1)
{
return str.split('v=')[1].substr(0, 11); // get 11-char youtube video id
} else if (str.length == 11) {
return str;
}
return null;
}
}
);
我把keyup,因为我想每次用户更改url时触发事件。但你是对的。但是当我使用onblur时,用户必须点击外面的某个地方才能运行ajax。我怎样才能玩输入按钮。你能帮忙吗? – madi
我如何处理cacheUrl?对不起,我可能听起来很愚蠢.....大声笑 – madi
@madi我编辑了我的答案:基本上,你可以检查最大的按键被按下并触发模糊事件,如果该字符是输入 –