JQUERY在键入时将文本框的内容复制到字段

我试图在用户输入时同时将文本框的内容复制到div中。 这是JSFIDDLE上的代码正面临的错误是, div中复制的值的长度总是比文本框的长度少一个 。 我在剧本中犯了什么错误?

请改用keyup

 $("#boxx").keyup(function(event) { var stt = $(this).val(); $("div").text(stt); }); 

keypress该键时发生keypress ,并且您希望在释放该键时传输文本。

keyupkeypress事件适用于键盘输入,但如果使用鼠标右键单击并将某些内容粘贴到文本框中,则不会获取值更改。 您可以将bindinput事件一起使用来注册keyup和paste事件,如下所示:

 $("#textbox1").bind('input', function () { var stt = $(this).val(); $("#textbox2").val(stt); }); 

keypress事件发生在元素中的文本更新之前。 您可以延迟复制操作以解决此问题。 即使是0毫秒的延迟也足以在元素更新后进行复制操作:

 $("#boxx").keypress(function() { var $this = $(this); window.setTimeout(function() { $("div").text($this.val()); }, 0); }); 

这里更新了小提琴。

 $("#title").keypress(function() { var $this = $(this); window.setTimeout(function() { $("#slug-url").val($this.val().toLowerCase().replace(/ /g, '-')); }, 0); }); 

使用@FrédéricHamidi’方法生成seo友好url后用’ – ‘替换空格并将文本更改为小写。

使用keyup并更改两者。

 $("#boxx").on('keypress change', function(event) { var data=$(this).val(); $("div").text(data); }); 

这是http://jsfiddle.net/6HmxM/785/的例子

 $("#boxx").keyup(function() { var $this= $(this); window.setTimeout(function() { $("div").text($this.val()); }, 0); }); 

这项工作正常。

复制也有效f9 enter code here