我正试图在空格键上按下一个事件,如果在输入的最后一个单词中找到了一个url并且如果有结果则终止该事件,所以如果用户继续键入...该函数不会继续发送请求到服务器。我很累,希望这是有道理的...基本上我正在尝试完成facebook提交帖子并输入以http://开头的网址时所拥有的内容。我已经让它工作100%完美...你可以输入和输入,当输入网址时,以http://开头,它会ping服务器,抓取元数据,来自页面的图像等。但是当用户继续打字时,该函数似乎是为了循环并冻结,因为它仍然试图找到一个网址?
下面是代码:
$(document).keypress(function(e){
$('#example').keyup(function() {
if(e.which == 32) {
var body = $('#example').attr('value');
var body = encodeURIComponent(body);
$.ajax({
type: "GET",
url: "get_url.php",
data: "entry="+body,
cache: false,
success: function(html) {
$("#new_url").html(html);
}
});
return false;
}
});
});
我知道它很混乱......还在学习jQuery!
感谢您的帮助!我想扫描textarea输入作为用户键入以http://,www或http:// w w w开头的URL。使用jquery,当发现触发ajax请求并停止该函数进一步查找url时...但是我目前在php中使用正则表达式来查找url,获取数据并返回它...
答案 0 :(得分:2)
我可能不会像这样使用keypress事件。以下是我的想法:
focus()
事件
文本框触发一个
setInterval(...)
回拨clearInterval()
停止
扫描时,你做一个AJAX
请求获取有关URL的信息blur()
事件中
文本框,设置一个杀死它的标志
永久回调(即不会
得到恢复,当前的AJAX
请求返回) - 没有必要
扫描用户是否未输入
任何我会尽快发布一些代码,但希望这会帮助你睡个好觉。也许,你应该先睡一觉,然后回到这个?
答案 1 :(得分:1)
试试这个:
$(document).ready(function() {
$('#example').keyup(function(e) {
if(e.which == 32) {
var body = $('#example').attr('value');
body = encodeURIComponent(body);
$.ajax({
type: "GET",
url: "get_url.php",
data: "entry="+body,
cache: false,
success: function(html) {
$("#new_url").html(html);
}
});
return false;
}
});
});
按下整个身体上的每个按键都不会触发。 此外,我只声明了一次body var。
在本地测试它,不再锁定,但没有得到任何有用的响应,因为get_url.php似乎没有返回任何内容。