我有一个下拉/输入字段,但我想将一个可拖动事件放入其中。当我第一次拖动它时,它移动得很流畅,但是当我开始编辑输入字段内的文本时,我似乎无法再拖动它了。我一直在研究可拖动方法,但没有成功。
基本上我有一个 <div>
包裹在附加可拖动事件的下拉/输入字段周围。
<div class="draggable">
<select>
<option>
</select>
<input>
</div>
是这样的。下面是具有下拉/输入字段的代码的链接,但它仍然具有可拖动事件。
http://jsfiddle.net/yUxr4/406/
编辑:
这是更新后的代码,但可拖动不起作用。我不知道为什么。
http://jsfiddle.net/9SPvQ/1/
您需要分派(dispatch)事件,因为 jQuery UI 可拖动可防止输入元素上的拖动行为。现在,要仍然让输入元素响应,您可以使用以下解决方法:
$(".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)
}
});