我创建了一个用户可以更改的textarea页面。
知道用户输入数据的最佳方式是什么,我可以发送内容?
我已经尝试过使用jQuery .change()函数,但我发现它有点不可靠,因为它只有在用户点击输入数据后才会触发(因此有些情况下输入的数据不会注册(如果用户按下F5)
答案 0 :(得分:1)
你试过blur()吗?但我怀疑你是否可以确切地确定用户输入数据并同时阻止他离开(或重新加载)而不保存输入数据。
您可以使用键盘事件将数据保存在存储中,并在重新加载页面后重新加载数据。但我不会这样做将数据发送到服务器。这将是一个巨大的交通源。
答案 1 :(得分:1)
如果您想知道用户何时完成某个字段,请尝试focusOut()
。
当焦点输出事件或任何元素发送到元素时 在里面,失去了焦点。
尝试在字段中输入任意随机单词或句子,然后在textarea外部单击,看看会发生什么。
$('#textarea1').focusout(function(){
//Your action code goes here!
alert($('#textarea1').val());
});
#textarea1 {
width:500px;
height:150px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea id="textarea1"></textarea>
编辑:糟糕,这与OP试图解决的问题相同。那么keyup()
将会这样做。
当用户释放密钥时,keyup事件将发送到元素 键盘。它可以附加到任何元素,但事件只是 发送到具有焦点的元素。可聚焦元素可以变化 浏览器之间,但表单元素总是可以获得焦点 这种事件类型的合理候选人。
$('#textarea1').keyup(function(){
//Your action code goes here!
$('#textval').text($('#textarea1').val());
});
#textarea1 {
width:500px;
height:150px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<textarea id="textarea1"></textarea>
<div id="finalval">The value is <span id="textval">unset</span></div>
答案 2 :(得分:1)
如果您想在每次按键时触发,可以使用input
事件。它经常用于自动填充等。
$(document).on('input', '#yourElement', function () {
console.log("Input has changed!");
});