0

这是我的javascript:

$(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。我确定我在做一些非常愚蠢的事情,有什么想法吗?

4

2 回答 2

1

您正在将一个 jquery 对象传递给一个需要 DOM 元素的函数。您还想摆脱ready

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

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

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

http://jsfiddle.net/wC5Qm/1/

于 2013-01-04T21:29:11.167 回答
1

textarea 的 ready 事件不会触发,因为一旦附加了事件,textarea 就已经加载了。此外,您还必须将原始元素,而不是 jQuery 对象传递给函数。尝试更改这些行

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

对此

moveCursorToEnd($("textarea[name='comment']")[0]);
于 2013-01-04T21:31:49.727 回答