jQuery -检查输入内容是否包含url在keyup上

jQuery - Check if input contents contains url on keyup

本文关键字:url 包含 keyup 是否 检查 输入 jQuery      更新时间:2023-09-26

当用户手动输入内容、粘贴链接或两者的组合时,我试图检查输入是否包含URL。我想获取URL的内容(类似于Facebook),当第一次检测发生。

到目前为止,我有以下内容:

$('#message').keyup(function() {
     var exp = /(ftp|http|https):'/'/('w+:{0,1}'w*@)?('S+)(:[0-9]+)?('/|'/(['w#!:.?+=&%@!'-'/]))?/; 
     if((this.value.match(exp))) {
      var match = exp.exec(this.value);
        alert(match[0]);
        $(this).unbind();
        return;
     }
  });
  $("#message").bind('paste', function(e) { $("#message").trigger('keyup'); });

当一个链接被粘贴时,当一些东西被键入然后粘贴时,,但当一个url被手动键入时,这个行为正确。

如果我输入"http://www.stackoverflow.com",在"http://w"之后会触发匹配。

写这个行为的更聪明的方法是什么?

EDIT:刚刚想到了一些东西-针对用户键入的最后一个前后有空格的内容测试正则表达式如何?

谢谢,

在"粘贴"上获取页面是一个很好的选择,但我真的不确定您是否想在用户键入页面时获取页面。用户可以输入一个长URL,其中包含确定要呈现哪个页面的某些查询字符串参数。理想情况下,您希望用户在开始发送HTTP请求之前完成整个内容的输入,否则您将获取各种用户不想(或不需要)看到的中间页面。例如

www.facebook.com

显然会获取主页,但是

www.facebook.com/britishpcrepairs

将获取Facebook上特定组的页面,这可能是您的用户想要看到的。因此,获取主页并不是真正需要的,而且会造成不必要的混乱。

我认为你应该

  1. 粘贴后立即取页
  2. 在按下键记录且未发生粘贴后获取模糊页面或在按下键记录并且没有发生粘贴后,在一定的超时(例如2秒)后获取页面