我有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库具有此功能?
答案 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 空间更长:
将一个单词的(部分)放入第二个字段后,剩下的单词将直接转到第二个字段。