输入上的.val和jquery中的.append的奇怪问题

时间:2011-09-23 16:57:56

标签: jquery

我在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”。因此,由于某种原因,它没有获得最后输入的值。

2 个答案:

答案 0 :(得分:2)

您正在获取keydown上的值,这是在将字母添加到值之前。在keyup上获取值。

当您输入“food”时,最后一次keydown事件是当值为“foo”并按“d”时。

如果你使用keyup,最后一个keyup将是你释放“d”时,值将是“food”

答案 1 :(得分:0)

使用keyup()而不是keydown()