2013-01-04 27 views
0

这里一个动态值后获得焦点的textarea的到底是我的javascript:试图创建与jQuery

$(document).ready(function(){ 
    $(".reply").click(function(){ 
     var replyId = $(this).attr("id"); 
     $("textarea[name='comment']").val("<reply:"+replyId+">"); 
     $("textarea[name='comment']").ready(function(){ 
      moveCursorToEnd($(this)); 
     }); 
    }); 
}); 

function moveCursorToEnd(el) { 
    if (typeof el.selectionStart == "number") { 
     el.selectionStart = el.selectionEnd = el.value.length; 
    } else if (typeof el.createTextRange != "undefined") { 
     el.focus(); 
     var range = el.createTextRange(); 
     range.collapse(false); 
     range.select(); 
    } 
} 

我有些新的JavaScript功能然而,这似乎并没有工作,它将把该值在但不专注于textarea。我确信我正在做一些非常愚蠢的事情,有什么想法?

回答

1

的文本区域并不会因为火一旦事件附加textarea的已加载ready事件。此外,您还必须传递原始元素,而不是jQuery对象到函数中。试着改变这些线

$("textarea[name='comment']").ready(function(){ 
    moveCursorToEnd($(this)); 
}); 

这个

moveCursorToEnd($("textarea[name='comment']")[0]); 
+0

darn也没有工作,但谢谢 – kqlambert

+0

尝试切换到使用原始元素 - 请参阅我最近的编辑 –

+0

Hooray它的工作,只要栈让我接受答案 – kqlambert

1

您正在将jquery对象传递给期望DOM元素的函数。你也想摆脱ready的:

$(".reply").click(function(){ 
    var replyId = $(this).attr("id"); 
    var $textArea = $("textarea[name='comment']"); 

    $textArea.val("<reply:"+replyId+">"); 

    moveCursorToEnd($textArea[0]); 
}); 

+0

没有耶似乎没有工作 – kqlambert

+0

注意的另一个问题。答案已更新。小提琴添加。 –