HTML5在<input>中选择文本,鼠标位于可拖动的div上

Fab*_*ice 6 html5 drag-and-drop input draggable

在下面的代码中,我希望能够选择带有鼠标的文本,而无需移动父div.(没有jQuery)

<div draggable="true">
    <input type="text" value="This is text to select">
</div>
Run Code Online (Sandbox Code Playgroud)

小智 3

我的建议是,为输入元素设置一个 onblur 和 onfocus 事件,以切换对象的可拖动属性。这是对我有用的测试代码:

<style>
    #dragObject{background-color: grey; padding: 80px 20px; width: 175px;}
</style>

<div id="dragObject" draggable="true">
    <input type="text" value="This is text to select" onfocus="entering()" onblur="leaving()">
</div>

<script>
function entering(){
    document.getElementById('dragObject').setAttribute("draggable", "false");
}

function leaving(){
    document.getElementById('dragObject').setAttribute("draggable", "true");
}
</script>
Run Code Online (Sandbox Code Playgroud)

使用此解决方案,您的可拖动 div 必须大于输入,因为必须有一个地方可以在模糊输入的同时单击进行拖动。尽管这甚至不应该是一个缺点,但从用户体验的角度来看,您至少需要一个标签或图标或可以抓住的东西。否则,您将不得不开始做一些奇怪的事情,例如“如果您单击并按住一秒或更长时间,则您打算拖动,否则您将选择文本”。从代码视图来看这是可行的,但可能是一个糟糕的用户界面选择。