一旦单击到其他元素或鼠标,隐藏输入框但保留一次焦点

时间:2015-03-31 16:53:27

标签: javascript jquery html css

如何在鼠标添加或点击其他元素时隐藏输入框并保留一次焦点?我目前的代码如下,鼠标正在工作,但事情是一旦专注于显示输入框,它们立即被隐藏。请参阅下面的演示并单击编辑按钮。输入框将显示,但一旦聚焦就会消失。



$(".edit").click(function () {

    var $span = $(this);
    $(this).closest('tr').find('.textdisplay').hide();
    $(this).closest('tr').find('.editbox').css("display", "inline");

    var ID = $(this).attr('id');
    var RemoveIDedit = ID.replace('edit_', '');
    $(this).hide();
    $("#save_" + RemoveIDedit).css("display", "inline");

});

$(".save").click(function () {

    var $span = $(this);
    $(this).closest('tr').find('.textdisplay').css("display", "inline");

    $(this).closest('tr').find('.editbox').hide();

    var ID = $(this).attr("id");
    var RemoveIDsave = ID.replace('save_', '');
    $(this).hide()
    $("#edit_" + RemoveIDsave).css("display", "inline");

});

$(document).mouseup(function () {
    $(".editbox").hide();
    $(".textdisplay").show();
    $(".edit").css("display", "inline");
    $(".save").css("display", "none")
});

.save {
    display: none;
}
table {
    width: 400px;
}
}
table td {
    border: 1px solid;
}
.trash {
    font-size: 14px;
    padding-left: 5px;
}
.save, .edit {
    padding-left: 5px;
    position: absolute;
    font-size: 14px;
}
.editbox {
    font-size:14px;
    display: none;
}
.textdisplay {
    font-size: 14px;
    float: left;
    font-weight: normal;
    word-wrap:break-word;
    white-space: normal;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<table>
    <tr>
        <td> <span class="textdisplay"> Data 1A </span>
            <input type="text" class="editbox" value="Data 1A" />
        </td>
        <td> <span class="textdisplay"> Data 1B </span>
            <input type="text" class="editbox" value="Data 1B" />
        </td>
        <td>
            <a href="#" id="282" class="trash">Delete</a>
            <a href="#" id="edit_282" class="edit">Edit</a> 
            <a href="#" id="save_282" class="save">Save</a>
        </td>
    </tr>
    <tr>
        <td>
            <span class="textdisplay"> Data 2A </span>
            <input type="text" class="editbox" value="Data 2A" />
        </td>
        <td>
            <span class="textdisplay"> Data 2B </span>
            <input type="text" class="editbox" value="Data 2b" />
        </td>
        <td>
            <a href="#" id="283" class="trash">Delete</a>
            <a href="#" id="edit_283" class="edit">Edit</a> 
            <a href="#" id="save_283" class="save">Save</a>
        </td>
    </tr>
</table>
&#13;
&#13;
&#13;

JS Fiddle

1 个答案:

答案 0 :(得分:3)

所以只需将鼠标更改为以下代码:

$(document).mouseup(function(e){
    if ($(e.target).hasClass('editbox')) return false;
    $(".editbox").hide();
    $(".textdisplay").show();
    $(".edit").css("display","inline");
    $(".save").css("display","none")
});     

就像这个小提琴一样:

https://jsfiddle.net/L6v2880z/7/

编辑:对不起$(这个)是我之前使用的错误上下文...