jqueryUI сортировки: обработка.disableSelection() на форме входа
пример: у меня есть неупорядоченный список, содержащий кучу входных данных формы.
после создания ul .sortable(), я вызываю .disableSelection () на сортируемой (ul), чтобы предотвратить выделение текста при перетаскивании элемента li.
..все в порядке, но мне нужно повторно / включить выбор текста на входах формы.. или форма в основном не редактируется ..
Я нашел частичное решение @ http://forum.jquery.com/topic/jquery-ui-sortable-disableselection-firefox-issue-with-inputs
- enableSelection, disableSelection, похоже, все еще не задокументированы:http://wiki.jqueryui.com/Core
какие мысли?
6 ответов
решена . немного взломать, но работает! .. любые комментарии, как я могу сделать это лучше?
применить .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();
});
небольшое улучшение от поста плагина 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();
jQuery UI 1.9
$("#list").sortable();
$("#list selector").bind('click.sortable mousedown.sortable',function(e){
e.stopImmediatePropagation();
});
селектор = вход, таблица, li....
У меня была та же проблема. Решение довольно простое:
$("#list").sortable().disableSelection();
$("#list").find("input").enableSelect();
ниже будет отключен выбор для всего документа, но элементы ввода и выбора по-прежнему будут функциональными...
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(); });
и замените "sortable_container_id "идентификатором элемента, который является контейнером всех" сортируемых " элементов.