我有两个textareas(ta1
和ta2
)。我想要的是ta2
来模仿ta1
中的文字。这很简单,但我还需要一些其他功能。
ta1
有一个按键(jQuery)事件,它检查某些单词并替换它们。例如,如果我在ta1中键入某事,它将被替换为其他。我想要的是存储在ta2
中输入的原始文本,而不替换文本。
如果所有用户正在输入字符或按退格键,这很容易。当用户将光标移动到文本中间的某个位置并开始输入时,就会出现问题。或者当用户选择一堆文本并删除它并开始输入时。有谁知道解决这个问题?
编辑:为了更清楚这一点,我正在使用它。我想要类似于Facebook的东西“你觉得什么?”特征。
因此,用户可以键入@something
,当他们从动态生成的下拉列表中进行选择时,它将用某些内容替换@something
。所以说用户输入“Hello @something你好吗?”然后显示的文字将变成“你好,你好吗?”
答案 0 :(得分:0)
UPD :此代码动态更新 t1 中的文字,替换以下标签:"[b]sometext[/b]"
=&gt; "<b>sometext</b>"
并将"[b]sometext[/b]"
复制到 t2 。
<?php
if (array_key_exists("encode", $_GET) && strlen($_GET["encode"]) > 0)
{
$text = $_GET["encode"];
$s = preg_replace("/\[b\](.*)\[\/b\]/i", "<b>\\1</b>", $text);
echo $s;
die;
} else
if (array_key_exists("decode", $_GET) && strlen($_GET["decode"]) > 0)
{
$text = $_GET["decode"];
$s = preg_replace("/<b>([^<]{1,})<\/b>/i", "[b]\\1[/b]", $text);
echo $s;
die;
} else
if ((array_key_exists("decode", $_GET) && strlen($_GET["decode"]) <= 0) || (array_key_exists("encode", $_GET) && strlen($_GET["encode"]) <= 0))
{
echo "";
die;
}
?>
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("[name=t1]").keyup(function() {
$.get("index.php?", {"encode": $("[name=t1]").val()}, function(data) {
$("[name=t1]").val(data);
});
$.get("index.php?", {"decode": $("[name=t1]").val()}, function(data) {
$("[name=t2]").val(data);
});
});
});
</script>
</head>
<body>
<textarea name="t1"></textarea><br /><hr /><br />
<textarea name="t2"></textarea><br /><br />
</body>
</html>
注意:使用JQ 1.4.2。