jQuery - проверяет, содержит ли входное содержимое URL-адрес при включении - PullRequest
2 голосов
/ 08 апреля 2011

Я пытаюсь проверить, содержит ли вход 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".

Каков более разумный способ написать это поведение?

РЕДАКТИРОВАТЬ : Просто подумал о чем-то - как насчет проверки регулярного выражения против последней вещи, введенной пользователем, с пробелом до и послеэто?

Спасибо,

1 Ответ

3 голосов
/ 08 апреля 2011

Хотя выбор страницы «вставить» - это хороший вариант, я действительно не уверен, хотите ли вы получать страницы по мере их ввода пользователем.Пользователь может вводить длинный URL-адрес, который содержит определенные параметры строки запроса, которые определяют, какую страницу отображать.В идеале вы хотите, чтобы пользователь закончил печатать всю информацию до того, как вы начнете отправлять HTTP-запросы, иначе вы будете получать все виды промежуточных страниц, которые пользователь не хочет (или не должен видеть).Например,

www.facebook.com

, очевидно, получит домашнюю страницу, однако

www.facebook.com / britishpcrepairs

выберет страницу для определенной группы в Facebook, что, вероятно, и хотел увидеть ваш пользователь.Таким образом, загрузка главной страницы на самом деле не нужна, и это может привести к ненужным путаницам.

Я думаю, вам следует

  1. Получить страницу сразу при "вставке"
  2. Получить страницуразмыто после того, как нажатие клавиши было записано, и вставка не произошла ИЛИ Извлечь страницу по истечении определенного времени (скажем, 2 секунды) после того, как нажатие клавиши было записано, и вставка не произошла
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...