我正在尝试在用户输入时同时将文本框的内容复制到div中。这是THE CODE ON JSFIDDLE 面临的错误是, div中复制的值的长度始终比文本框的长度小1。我在剧本中犯了什么错误?
答案 0 :(得分:21)
请改用keyup
。
$("#boxx").keyup(function(event) {
var stt = $(this).val();
$("div").text(stt);
});
按下该键并且您希望在释放该键时传输文本时,会出现 keypress
。
答案 1 :(得分:10)
keyup 和 keypress 事件适用于键盘输入,但如果使用鼠标右键单击并将某些内容粘贴到文本框中,则值更改不会被接走。您可以将bind
与输入事件一起使用来注册 keyup 并粘贴以下事件:
$("#textbox1").bind('input', function () {
var stt = $(this).val();
$("#textbox2").val(stt);
});
答案 2 :(得分:6)
keypress
事件发生在更新<input>
元素中的文本之前。您可以延迟复制操作以解决此问题。即使是0毫秒的延迟也足以在元素更新后进行复制操作:
$("#boxx").keypress(function() {
var $this = $(this);
window.setTimeout(function() {
$("div").text($this.val());
}, 0);
});
更新了小提琴here。
答案 3 :(得分:0)
$("#title").keypress(function() {
var $this = $(this);
window.setTimeout(function() {
$("#slug-url").val($this.val().toLowerCase().replace(/ /g, '-'));
}, 0);
});
使用@FrédéricHamidi'方法在用' - '替换空格并将文本更改为小写后生成seo友好URL。
答案 4 :(得分:0)
使用keyup并更改两者。
$("#boxx").on('keypress change', function(event) {
var data=$(this).val();
$("div").text(data);
});
答案 5 :(得分:-3)
$("#boxx").keyup(function() {
var $this= $(this);
window.setTimeout(function() {
$("div").text($this.val());
}, 0);
});
这项工作正确。
复制也适用于f9 enter code here