检测部分url模式,然后将其移动到其他字段

时间:2011-06-15 04:12:29

标签: javascript jquery regex url

我有2个textarea字段。第一个字段有字符限制。当用户在第一个字段中键入文本时,在限制到达后,文本将自动继续到第二个字段。

问题是当用户输入或粘贴网址时,整个网址需要移动到第二个字段。我想使用正则表达式并在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 个答案:

答案 0 :(得分:1)

我看不出你的问题。据推测,你将达到你的角色限制,回到前一个空格字符(可能是许多字符中的任何一个 - 空格,制表符,返回等)并在那里分割内容。这应该考虑到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;
}

答案 1 :(得分:0)

您可以使用空格作为分隔符来获取字符串并将其拆分为数组。

然后你迭代这些单词并检查它是否比第一个字段 free 空间更长:

  • 如果更长,则检查它是否为URL:如果是,则直接放入第二个字段,否则将其拆分。
  • 如果不再将单词追加到第一个字段

将一个单词的(部分)放入第二个字段后,剩下的单词将直接转到第二个字段。