stackoverflowers。我正在开发一个自动完成的应用程序,需要逐个字符地捕获输入文本,而我现在正在收听"输入" jquery事件。
我面临的问题是粘贴文本,因为函数是用整个输入值触发的,如下所示:
粘贴值="演示"
input.val() = "demo"
但是,我希望实现的目的是将粘贴的值分解为实际输入的值,然后像这样触发该函数4次:
粘贴值="演示"
input.val() = "d"
input.val() = "de"
input.val() = "dem"
input.val() = "demo"
你们可以给我一些关于如何用vanilla JS或Jquery解决这个问题的提示或指示吗?
提前致谢。
答案 0 :(得分:1)
尝试以下方法:
<input type="text">
<div></div>
<script>
var myInput = $("input");
var value = ''; //to store previous input value
myInput.on('input', function () {
var current = myInput.val();
var dif = current.replace(value, '');
if(dif.length) {
var out = value;
for(var i = 0; i < dif.length; i++) {
out += dif.substr(i, 1);
output(out);
}
}
value = current;
});
function output(text) {
console.log(text);
$("div").text(text);
// here you can even to re-set input value via myInput.val
}
</script>
尝试输入&#34; 1&#34;,&#34; 2&#34;,&#34; 345&#34;你会得到&#34; 1&#34;,&#34; 12&#34;,&#34; 123&#34;,&#34; 1234&#34;,&#34; 12345&#34;在控制台日志中。
只有将文本追加到输入的末尾时,此方法才有效。如果您不仅需要将文本插入输入的末尾,则应更新该过程。
另见Plunker。
答案 1 :(得分:0)
我认为您可以在将输入显示到屏幕之前检查输入的长度。