无法从可拖动的可编辑DIV中选择文本

时间:2014-02-04 18:58:05

标签: javascript jquery contenteditable jsfiddle gridster

我使用gridster构建了一个可拖动的网格,并遇到了我的可编辑DIV不可编辑的问题,因为gridster.js会覆盖click事件。我找到了解决方案,当我点击DIV时我可以手动触发focus()功能,现在这个DIV中的文字可以改变 BUT 不可选(不是鼠标或键盘)

你知道导致这种行为的原因吗?我用我的代码制作了一个JSFiddle - > CLICK

HTML看起来像:

<div class="gridster" id="frame" style="border:1px solid #cecece;">
    <ul>
        <li class="widget" data-row="1" data-col="1" data-sizex="2" data-sizey="1">
            <div id="testID">Test 1</div>
            <div class="drag-handle">HAND</div>
        </li>
        <li class="widget" data-row="1" data-col="1" data-sizex="2" data-sizey="1">
            <div>Test 2</div>
            <div class="drag-handle">HAND</div>
        </li>
    </ul>
</div>

JS看起来像:

$(document).ready(function() {
    var gridster = $(".gridster ul").gridster({
        max_cols: 2,
        widget_margins: [10, 2],
        widget_base_dimensions: [140, 40],
        resize: {
            enabled: true,
            axes: ['x']
        },
        draggable: {
            handle: '.drag-handle'
        }
    }).data('gridster');

    $("#testID").click(function(){
          gridster.disable();
          $(this).attr("contenteditable","true");
          $(this).focus();
    })
    .blur(function(){
          gridster.enable();
    });
});

1 个答案:

答案 0 :(得分:2)

发现问题。问题是resize功能。因此,解决方案不仅仅是在用户点击时关闭draggable()功能,还必须关闭resize功能。

关闭:

gridster.disable().resize_disable();

开启:

gridster.enable().resize_enable();

当用户双击该字段时,我现在也完成了editable任务,因为这是一个更好的解决方案,具有更少的不当行为。