javascript - 如何使输入字段可拖动

标签 javascript jquery html jquery-ui draggable

<分区>

我有一个下拉/输入字段,但我想将一个可拖动事件放入其中。当我第一次拖动它时,它移动得很流畅,但是当我开始编辑输入字段内的文本时,我似乎无法再拖动它了。我一直在研究可拖动方法,但没有成功。

基本上我有一个 <div>包裹在附加可拖动事件的下拉/输入字段周围。

<div class="draggable">
    <select>
       <option>
    </select>
    <input>
</div>

是这样的。下面是具有下拉/输入字段的代码的链接,但它仍然具有可拖动事件。

http://jsfiddle.net/yUxr4/406/

编辑: 这是更新后的代码,但可拖动不起作用。我不知道为什么。 http://jsfiddle.net/9SPvQ/1/

最佳答案

您需要分派(dispatch)事件,因为 jQuery UI 可拖动可防止输入元素上的拖动行为。现在,要仍然让输入元素响应,您可以使用以下解决方法:

DEMO jsFiddle

$(".draggable").draggable({
    start: function( event, ui ) {
       $(this).data('preventBehaviour', true);
    }
});

$(".draggable :input").on('mousedown', function (e) {
    var mdown = document.createEvent("MouseEvents");
    mdown.initMouseEvent("mousedown", true, true, window, 0, e.screenX, e.screenY, e.clientX, e.clientY, true, false, false, true, 0, null);
    $(this).closest('.draggable')[0].dispatchEvent(mdown);
}).on('click', function(e){
    var $draggable = $(this).closest('.draggable');
    if($draggable.data("preventBehaviour")){
        e.preventDefault();
        $draggable.data("preventBehaviour", false)
    }
});

关于javascript - 如何使输入字段可拖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22814073/

相关文章:

javascript - 使用 React 的 Material UI

jQuery 绑定(bind)输入

javascript - jQuery/JavaScript : Reorder Unordered List via Dragging

html - Facebook 点赞按钮框在窗口区域外打开

javascript - HTML 事件加载速度比宏运行速度慢

javascript - Vue2 传递任意命名变量作为 prop

javascript 将 javascript 动态添加到 iframe

javascript - jQuery - 如何使输入值 ("email"、 "password")在失焦时重新出现?

html - 访问过的链接不会加下划线

javascript - Angularjs 无法找到我的 Controller