喜欢Facebook!问题得到:在按键(e)上包含来自textarea的值? “DEMO”

时间:2009-12-31 08:34:01

标签: jquery jquery-selectors

我正试图在空格键上按下一个事件,如果在输入的最后一个单词中找到了一个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,获取数据并返回它...

2 个答案:

答案 0 :(得分:2)

我可能不会像这样使用keypress事件。以下是我的想法:

  1. 使用focus()事件 文本框触发一个 setInterval(...)回拨
  2. 在被叫函数中,使用正则表达式 扫描文本框的内容 用于URL
  3. 如果找到有效的网址,请致电 clearInterval()停止 扫描时,你做一个AJAX 请求获取有关URL的信息
  4. 当AJAX请求返回时, 更新文本框的内容, 并恢复回调,以便保持 扫描
  5. blur()事件中 文本框,设置一个杀死它的标志 永久回调(即不会 得到恢复,当前的AJAX 请求返回) - 没有必要 扫描用户是否未输入 任何
  6. 我会尽快发布一些代码,但希望这会帮助你睡个好觉。也许,你应该先睡一觉,然后回到这个?

答案 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似乎没有返回任何内容。