jQuery可拖动输入元素

时间:2010-10-09 03:13:27

标签: jquery jquery-ui

我正在尝试使用jQuery UI使表单元素可拖动。例如,按钮,复选框,文本字段等。到目前为止,我没有运气。你有什么想法如何实现这个目标吗?

5 个答案:

答案 0 :(得分:5)

也许3年太晚但您可以发送事件并使用以下代码段来获得更预期的行为:

DEMO jsFiddle

$(".draggable").draggable({
    start: function (event, ui) {
        $(this).data('preventBehaviour', true);
    }
});
$(".draggable").find(":input").on('mousedown', function (e) {
    var mdown = new MouseEvent("mousedown", {
        screenX: e.screenX,
        screenY: e.screenY,
        clientX: e.clientX,
        clientY: e.clientY,
        view: window
    });
    $(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)
    }
});

答案 1 :(得分:3)

我认为这最符合你的要求:)它的可拖动+可调整大小的输入元素但你不会失去它们的性质可编辑。

$(function(){
    $('.draggable').draggable().resizable();
});

以下是我的解决方案:my jsFiddle

答案 2 :(得分:2)

输入元素需要可编辑,因此将它们设置为 可拖动 会使它们无法编辑。

将它们包裹在<span><div>中,我强烈建议您使用handle

答案 3 :(得分:1)

另一个选择是将其放入包装器中,并为输入设置此CSS:

enumerate

您将无法输入修改输入的值。

答案 4 :(得分:0)

最好的解决方案是将它们放入div或span