如何立即知道textarea中的数据是否已更改?

时间:2015-05-07 07:47:37

标签: javascript jquery onchange

我创建了一个用户可以更改的textarea页面。

知道用户输入数据的最佳方式是什么,我可以发送内容?

我已经尝试过使用jQuery .change()函数,但我发现它有点不可靠,因为它只有在用户点击输入数据后才会触发(因此有些情况下输入的数据不会注册(如果用户按下F5)

3 个答案:

答案 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!");
});

jsFiddle example