为什么textarea上的jquery.animate会使闪烁的光标消失?

时间:2010-04-15 15:42:39

标签: asp.net javascript jquery textarea cursor

我有以下代码

$(document).ready(function() {
    $("#myTextArea").focus(function() {
        $("#myTextArea").animate({ "height": "75px"}, "normal");
        return false;
    });

在获得焦点时展开文本框。扩展发生,但闪烁的光标消失,至少在Firefox中!

编辑:textarea仍然专注,我可以输入它。

为什么会这样?有没有办法再次显示它?

提前致谢

1 个答案:

答案 0 :(得分:3)

您的return false语句正在取消focus操作:)只有在元素聚焦时才会获得光标,我只是从您的函数中删除此行。

除此之外,文本区域中的.focus()不是您可以轻松回收的东西,因为它有一个重要的位置,您最好坚持使用CSS更改:

$("#myTextArea").focus(function() {
    $(this).css({ "height": "75px" });
});

这根本不会影响游标行为,并且saema跨浏览器的工作(focus在浏览器中仍然不同),但当然不会动画。另一种选择(我没有在所有浏览器中对此进行测试)是你可以在动画之后使用相同的args再次触发焦点,恢复位置,如下所示:

$("#myTextArea").focus(function(e) {
    if($(this).height() == 75) return;
    $(this).animate({ height: 75}, "normal", function() {
        $(this).blur().trigger(e);
    });
});​

You can test this from here,请务必检查所有浏览器,因为focus行为可能会略有不同。