输入时只获取新的输入值

on input get only new input value

本文关键字:输入 获取      更新时间:2023-09-26

我有一个文本输入,在那里我可以获得输入并使用它

$(myinput).on('input', function() {
 $(somediv).append($(this).val());
});

我想继续使用append函数,但问题是在每个输入上,整个输入val()都被追加了。所以当我点击"a"时,它会添加"a",但当我点击a之后的"b"时,会添加"ab"而不是"b"。

有没有一种方法可以只获取最近的.input事件的输入而不清除输入框?

您可以使用.text()而不是.append()。这将设置整个文本,而不仅仅是附加它

$(somediv).text($(this).val());

或者可以使用字符串的最后一个字符。

$(somediv).text($(this).val().slice(-1));请参阅:如何获取字符串的最后一个字符?

我假设您想要使用append,因为somediv中还有其他内容您不想丢失。如果是这种情况,您可以创建一个子元素来接收文本,只附加一次,然后在input字段更改时更改其内容:

var receiver = $('span');
$(somediv).append(receiver);
$(myinput).on('input', function() {
 receiver.html($(this).val());
});
$("#myinput").on('input', function() {
   $("#somewhere").val("");
   setTimout(function() {
       $("#somewhere").append($(this).val());
   },10);
});

$("#myinput").focusout(function() {
   $("#somewhere").val("");
   setTimout(function() {
       $("#somewhere").append($(this).val());
   },10);
});

超时是指不重叠地做事。您也可以在没有timeout 的情况下尝试

您还可以绑定到keyup事件:

$(document).on('keyup', '#inputID', function(e){
     var key = String.fromCharCode(e.which);
    $('div').append(key);
});

jsFiddle演示