如何使用jQuery使文本框可拖动?

3

有没有人有使用jQuery使HTML输入文本框可拖动的经验?

我尝试将文本框包装在div中,并可以使其可调整大小,但无法拖动。该div和文本框放置在标准的jQuery UI对话框中。实际上,我需要在对话框内同时拥有可拖动和可调整大小的HTML输入文本框。

代码如下:

<script type="text/javascript" language="javascript">
    $(document).ready(function() {
        $("#btnShow").click(function(e) {
            $('#dialog').dialog("open");
        });
        $('#dialog').dialog({
            title: "Sample dialog",
            resizable: false,
            autoOpen: false,
            width: 400,
            height: 300,
            buttons: [{ text: "OK", click: function() { /* do something */ } },
                { text: "Cancel", click: function() { $(this).dialog("close") } }]
        });
        $('#divText1').draggable({
            containment: "parent",
            cursor: "move"
        }).resizable({
            containment: "parent",
            handles: "e, w"
        });
    });
</script>

    <input id="btnShow" type="button" value="Show" />

    <div id="dialog" title="Dialog Box" style="border: solid 1px black; margin: 0px 0px 0px 0px; padding: 5px 0px 0px 5x;">
        <div id="divText1" style="width: 200px; height: 30px;">
            <input type="text" style="width: 98%;" value="Hello world!" /><br /><br />
        </div>
    </div>

感谢您提前阅读! Goran
2个回答

1

默认情况下,类型为input、textarea、button、select、option的元素禁用了拖动功能。您可以使用cancel选项来更改/清除此设置。

工作代码:

$("#btnShow").click(function(e) {
  $('#dialog').dialog("open");
});
$('#dialog').dialog({
  title: "Sample dialog",
  resizable: false,
  autoOpen: false,
  width: 400,
  height: 300,
  buttons: [{
      text: "OK",
      click: function() { /* do something */ }
    },
    {
      text: "Cancel",
      click: function() {
        $(this).dialog("close")
      }
    }
  ]
});
$('#divText1').draggable({
  cancel: null,
  containment: "parent",
  cursor: "move"
}).resizable({
  containment: "parent",
  handles: "e, w"
});
<link href="https://code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<input id="btnShow" type="button" value="Show" />

<div id="dialog" title="Dialog Box" style="border: solid 1px black; margin: 0px 0px 0px 0px; padding: 5px 0px 0px 5x;">
  <div id="divText1" style="width: 200px; height: 30px;">
    <input type="text" style="width: 98%;" value="Hello world!" /><br /><br />
  </div>
</div>


0
类似的例子:
 <script type="text/javascript">
            $(function () {
                $(".draggable").draggable({
                    revert: true,
                    helper: 'clone',
                    start: function (event, ui) {
                        $(this).fadeTo('fast', 0.5);
                    },
                    stop: function (event, ui) {
                        $(this).fadeTo(0, 1);
                    }
                });

                $("#droppable").droppable({
                    hoverClass: 'active',
                    drop: function (event, ui) {
                        this.value = $(ui.draggable).text();
                    }
                });
            });
        </script>

请问您能否详细解释一下? - tesicg
谢谢您提供链接,但我知道如何拖动和调整div的大小。问题是如何使文本框可拖动和调整大小。 - tesicg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接