【发布时间】:2012-03-26 18:05:52
【问题描述】:
我有一个包含一些表单元素的元素:
<div id="draggable">
<button>Drag this</button>
</div>
我用 jQuery UI 让它可以拖动:
$('#draggable').draggable();
而form元素占据了可拖动元素中的大部分空间:
#draggable {
width: 100px;
height: 100px;
border: 1px solid #000;
background: #efe;
padding: 10px;
}
#draggable button {
width: 100px;
height: 100px;
line-height: 100px;
text-align: center;
background: rgba(0, 0, 0, .05);
border: none;
}
我可以点击 div 并拖动它,但如果我在表单元素内点击并尝试拖动,则什么也没有发生。试试看:http://jsfiddle.net/ACQrg/
我也尝试过指定'button' 的handle 参数:
$('#draggable').draggable({ handle: 'button' });
不幸的是,这也不起作用。试试看:http://jsfiddle.net/ACQrg/1/
我也尝试将 mousedown 事件传递给可拖动元素:
$('#draggable').draggable()
.find('button').mousedown(function (e) {
$('#draggable').trigger(e);
});
试试看:http://jsfiddle.net/ACQrg/4/
有没有办法让可拖动元素可以被它们包含的表单元素拖动?
【问题讨论】:
-
我遇到了类似的问题,我所做的是在表单元素的“顶部”添加另一个 div 并将其用作句柄。
-
@CharlesOvando 表单元素仍然可以点击吗?
-
这个问题有什么更新吗?
-
我也需要这个。我尝试禁用元素,这有助于阻止点击,但仍然不可拖动。我发现唯一可行的解决方案是为表单元素制作一个几乎透明的 png 覆盖。当然,以后要使用该元素时必须将其删除。
标签: jquery forms jquery-ui jquery-ui-draggable