所以我有一个页面,其中有一个文本框,可以在按键上更新,并在用户输入时立即保存到数据库。
所以这是我的textarea:
<textarea id="text"></textarea>
我想要的是什么:
用户在两个不同的标签tab1
和tab2
中两次打开同一页面。它们是完全相同的页面,但只打开了两次。现在,如果用户转到tab1
并开始在文本区域中输入,它将立即更新并保存到数据库,并且通过GET请求,它将显示在tab2
上。它工作得很好。我将间隔设置为1秒。因此,每次我在tab1上输入内容时,它都会自动将tab2
上的旧文本替换为较新的文本。
请记住,我正在输入并替换文本区域中的文本。
现在问题出现了:当用户输入tab1
并决定转到tab2
并对其进行修改时,tab2
中所做的更改将不会显示在tab1
中{1}},但GET请求仍然成功。它不会更新文本区域。反之亦然。编辑完文本区域后,如果用户输入内容,则任一选项卡中的文本区域都不会更新。
为了测试它,我创建了一个div <div id="test"></div>
,这在两个标签中都是一致的。无论在哪个选项卡上进行更改,它都会在任一选项卡上每秒更新一次。
我的javascript代码:
<script>
$(document).ready(function () {
var interval = function () {
$.ajax({
url: "<?php echo base_url('home/get') ?>",
cache: false,
success: function (html) {
$("#text").text(html);
$("#test").text(html);
},
});
};
setInterval(interval, 1000);
});
</script>
非常感谢任何帮助。
非常感谢。
答案 0 :(得分:1)
好的,我修好了。
我不知道它为什么会起作用,而是取代
$("#text").text(html);
带
$("#text").val(html);
修好了。
我不知道它为什么有效但它有效。
答案 1 :(得分:0)
.val()
是从输入/ textarea中获取值的jQuery方法。它与vanilla JS中的.value
属性相对应。
.tex()
适用于使用.textContent
属性的节点。我希望这有助于澄清你所做的改变为何有效。
答案 2 :(得分:0)
正如sagarthapa提到的那样 .val()适用于输入元素。而 .text()抓住&#34;隐藏&#34;在DOM中称为 DOMTextNode 的节点,其中大多数元素具有(但不是输入元素)。如果有嵌套元素,它将在读取时连接子元素文本节点。根据我的理解,当使用 .text()进行书写时,它将覆盖所有内部html和文本节点。