我在jquery中有这段代码:
$(document).ready(function () {
$("#main-edit").click( function() {
var cursorExists = $("#cursor").length;
if (!cursorExists){
$("#cursor-start").append("<input type='text' id = 'cursor' />");
$("#cursor").markCursor();
}
if (cursorExists){
$("#cursor").markCursor();
}
});
jQuery.fn.enterText = function(){
if( $("#cursor").val() ){
var character = $("#cursor").val();
$("#cursor").val("");
return this.append("<span>"+character+"</span>");
}
};
jQuery.fn.markCursor = function(){
$(this).focus();
$(this).keydown(function() {
$("#cursor-start").enterText();
});
};
});
我的问题出在enterText函数中。在keydown函数中,我获取输入的值,存储它,清除输入,并附加存储的值。但是当我输入类似“foo”的东西时......我得到“fo”.....当我输入“食物”时....我得到“foo”。因此,由于某种原因,它没有获得最后输入的值。
答案 0 :(得分:2)
您正在获取keydown上的值,这是在将字母添加到值之前。在keyup上获取值。
当您输入“food”时,最后一次keydown事件是当值为“foo”并按“d”时。
如果你使用keyup,最后一个keyup将是你释放“d”时,值将是“food”
答案 1 :(得分:0)
使用keyup()而不是keydown()