3

我有一个textarea,如果用户在它外面点击它应该被隐藏,如果他在textarea里面点击它仍然可见。

问题是当用户选择 textarea 的文本并将鼠标离开它时,textarea 被隐藏,他无法再复制文本。

我怎样才能解决这个问题?

现场 JSFiddle

HTML:

<span>Show textarea</span>

<div>
    <textarea>Text in textarea</textarea>
</div>

查询:

$("span").on("click", function () {
    $("textarea").show();
});


$(document).mouseup(function (e) {
    var container = $("div");

    if (container.has(e.target).length === 0) {
        $("textarea").hide();
    }
});

CSS:

textarea {
    position:absolute;
    right:10px;
    bottom:10px;
    display:none;
}
4

3 回答 3

3

只需使用该mousedown()事件

小提琴

于 2013-05-09T11:32:49.107 回答
1

更完整的证明(检查鼠标按下是否在外面并隐藏鼠标向上),但需要优化:http: //jsfiddle.net/YqJ48/

(function() {

$("span").on("click", function () {
    $("textarea").show();
});

var wasDown = false;

$(document).mousedown(function (e) {
    wasDown = false;
    var container = $("div");

    if (container.has(e.target).length === 0) {
        wasDown = true;
    }
});

$(document).mouseup(function (e) {
    var container = $("div");

    if (wasDown && container.has(e.target).length === 0) {
        $("textarea").hide();
    }
});

})()

编辑:如果您不想取消隐藏,请使用:

$("span").on("click", function () {
    $("textarea").show();
});

$(document).mousedown(function (e) {
    var container = $("div");

    if (container.has(e.target).length === 0) {
        $("textarea").hide();
    }
});
于 2013-05-09T11:36:25.337 回答
0

尝试这个 :

HTML

<span>Show textarea</span>

<div id="backGround">
    <textarea>Text in textarea</textarea>
</div>

jQuery

$('#backGround').click(function () {

 $("textarea").hide();   

});

于 2013-05-09T11:35:29.990 回答