Jquery ui jqueryUI可排序:处理表单输入上的.disableSelection()
示例:我有一个未排序的列表,其中包含一组表单输入 在生成ul.sortable()之后,我在可排序(ul)上调用.disableSelection(),以防止在拖动li项时进行文本选择 …一切正常,但我需要在表单输入上重新/启用文本选择。。或者表单基本上不可编辑 我找到了部分解决方案@Jquery ui jqueryUI可排序:处理表单输入上的.disableSelection(),jquery-ui,forms,jquery-ui-sortable,textselection,Jquery Ui,Forms,Jquery Ui Sortable,Textselection,示例:我有一个未排序的列表,其中包含一组表单输入 在生成ul.sortable()之后,我在可排序(ul)上调用.disableSelection(),以防止在拖动li项时进行文本选择 …一切正常,但我需要在表单输入上重新/启用文本选择。。或者表单基本上不可编辑 我找到了部分解决方案@ 启用选择、禁用选择似乎仍未记录: 有什么想法吗 已解决。有点小技巧,但很管用。。有什么意见我可以做得更好吗 apply.sortable(),然后在输入字段上启用文本选择: $("#list").sorta
- 启用选择、禁用选择似乎仍未记录:
有什么想法吗 已解决。有点小技巧,但很管用。。有什么意见我可以做得更好吗 apply.sortable(),然后在输入字段上启用文本选择:
$("#list").sortable({
stop: function () {
// enable text select on inputs
$("#list").find("input")
.bind('mousedown.ui-disableSelection selectstart.ui-disableSelection', function(e) {
e.stopImmediatePropagation();
});
}
}).disableSelection();
// enable text select on inputs
$("#list").find("input")
.bind('mousedown.ui-disableSelection selectstart.ui-disableSelection', function(e) {
e.stopImmediatePropagation();
});
我也有同样的问题。解决方案非常简单:
$("#list").sortable().disableSelection();
$("#list").find("input").enableSelect();
jQuery UI 1.9
$("#list").sortable();
$("#list selector").bind('click.sortable mousedown.sortable',function(e){
e.stopImmediatePropagation();
});
选择器=输入、表、li….与Zack-jQuery插件的帖子相比有一点改进
$.fn.extend({
preventDisableSelection: function(){
return this.each(function(i) {
$(this).bind('mousedown.ui-disableSelection selectstart.ui-disableSelection', function(e) {
e.stopImmediatePropagation();
});
});
}
});
完整的解决方案是:
$("#list").sortable({
stop: function () {
// enable text select on inputs
$("#list").find("input").preventDisableSelection();
}
}).disableSelection();
// enable text select on inputs
$("#list").find("input").preventDisableSelection();
以下内容将禁用对整个文档的选择,但“输入”和“选择”元素仍将起作用
function disableSelection(o) {
var $o = $(o);
if ($o.find('input,select').length) {
$o.children(':not(input,select)').each(function(x,e) {disableSelection(e);});
} else {
$o.disableSelection();
}
}
disableSelection(document);
但请注意.disableSelection已被jquery ui弃用,并有一天会消失。简单!只要做:
$( "#sortable_container_id input").click(function() { $(this).focus(); });
并将“可排序的容器id”替换为所有“可排序的”元素的容器的元素id。非常旧,但这里有另一种方法:
$('#my-sortable-component').sortable({
// ...
// Add all non draggable parts by class name or id, like search input texts and google maps for example
cancel: '#my-input-text, div.map',
//...
}).disableSelection();
如果你能发布你的代码,我可能会让这个工作。。。您是否查看过sortable的
cancel
选项?想一个JSFiddle来解释它。(www.jsfiddle.net)@Fosco。thks。最近有点忙。。我刚刚发布了一个破解方法来解决这个问题。作为一句话,它不仅影响“输入”,还影响“选择”。我没有看到关于“enableSelect()”的jQuery文档。。如果我错了,请纠正我,但我不相信它存在@扎克:可能是打字错误。已修复。正确名称为enableSelection()。看,听起来很棒!这有文档记录吗,你有链接吗?或者是一辆JSFIDLE。。我并不怀疑,因为jQuery是跨平台的,所以它在任何地方都有效:)到底什么不起作用?文本输入是不可选择的。这个问题来自2010年。这里的答案不太可能被阅读。