Определите частичный шаблон URL, затем переместите его в другое поле - PullRequest
0 голосов
/ 15 июня 2011

У меня есть 2 поля textarea. Первое поле имеет ограничение по количеству символов. Когда пользователь вводит текст в первом поле, после достижения предела текст автоматически переходит ко второму полю.

Проблема в том, что когда пользователь вводит или вставляет URL-адрес, весь URL-адрес необходимо переместить во второе поле. Я думал использовать регулярное выражение и разобрать текст в первом поле в обработчике событий keyup. Шаблон, который я буду искать, http: //...

Есть ли у кого-нибудь подобные проблемы или есть плагины jquery, которые могут это сделать?

Обновление:

Допустим, первое поле имеет ограничение в 15 символов. Тип пользователя:

'abc '

Затем вставьте ссылку после пробела: http://google.com/?q=test

Значение поля станет:

'abc http://google.com/?q=test'

Что больше 15 символов. Прямо сейчас скрипт обрежет текст, чтобы он стал:

'abc http://goog'

, а остальная часть текста переходит во второе поле:

 'le.com/?q=test'

Желаемым действием должно быть то, что целое http://google.com/?q=test перемещается во второе поле, оставляя 'abc ' в первом поле.

У меня вопрос: есть ли у вас лучший / эффективный способ реализовать эту функцию, или есть библиотека jquery, которая имеет эту функцию?

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Я не вижу твоей проблемы.Предположительно, вы приближаетесь к пределу количества символов, возвращаетесь к предыдущему символу пробела (это может быть любой из нескольких символов - пробел, табуляция, возврат и т. Д.) И разделяете содержимое.Это должно учитывать URL, поскольку они не имеют пробелов.

Редактировать

Вот краткий пример того, о чем я говорю:

<form>
  <textarea id="ta0" style="width: 200px; height 200px;"></textarea>
  <textarea id="ta1" style="width: 200px; height 200px;"></textarea>
  <input type="reset">
</form>
<script type="text/javascript">

function moveWords() {
    var el1 = this;
    var el1full = false;
    var el2 = document.getElementById('ta1');
    var charLimit = 20;
    var word, words;
    var v1 = el1.value;
    var s = '';

    // If gone over character limit
    if (v1.length > charLimit) {
      words = v1.split(/\s+/);

      // Get the value, split into words, add back 
      // one at a time until over limit, then put into
      // next field and change focus
      for (var i=0, iLen = words.length; i<iLen; i++) {
        word = words[i];

        if (!el1full && (s.length + word.length) < charLimit) {
          s += (s == '')? word : ' ' + word;
          len = s.length;
        } else {
          if (!el1full) {
            el1full = true;
            el1.value = s;
            s = '';
          }
          s += (s == '')? word : ' ' + word;
        }
        el2.value = s;
        el2.focus();
      }
    }
}

window.onload = function() {
  document.getElementById('ta0').onkeyup = moveWords;
}
0 голосов
/ 15 июня 2011

Вы можете получить строку и разбить ее на массив, используя пробелы в качестве разделителей.

Затем вы перебираете эти слова и проверяете, длиннее ли оно первого поля. Свободно Пробел:

  • если это дольше, вы проверяете, является ли это URL: если да, то вы помещаете его непосредственно во второе поле, в противном случае вы разделяете его.
  • если это не так, добавьте слово в первое поле

После того как вы поместили (часть) слова во второе поле, оставшиеся слова переходят непосредственно во второе поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...