8

例:フォーム入力の束を含む順序付けされていないリストがあります。

ul .sortable()を作成した後、ソート可能ファイル(ul)で.disableSelection()を呼び出して、liアイテムをドラッグするときにテキストが選択されないようにします。

..すべて問題ありませんが、フォーム入力でテキスト選択を再度/有効にする必要があります..またはフォームは基本的に編集できません..

私は部分的な解決策を見つけました@http://forum.jquery.com/topic/jquery-ui-sortable-disableselection-firefox-issue-with-inputs

何かご意見は?

4

7 に答える 7

21

解決しました。少しハックしますが、機能します!..どうすればこれをより良くすることができるかコメントはありますか?

.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();
});
于 2010-11-15T19:23:19.557 に答える
4

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();
于 2012-11-30T08:35:58.363 に答える
3

jQuery UI 1.9

$("#list").sortable();
$("#list selector").bind('click.sortable mousedown.sortable',function(e){
    e.stopImmediatePropagation();
});

セレクター=入力、テーブル、li...。

于 2012-10-18T17:03:23.017 に答える
0

私も同じ問題を抱えていました。解決策は非常に簡単です:

$("#list").sortable().disableSelection();
$("#list").find("input").enableSelect();
于 2011-10-05T13:35:57.640 に答える
0

以下は、ドキュメント全体の選択を無効にしますが、入力要素と選択要素は引き続き機能します...

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によって非推奨になり、いつかなくなることに注意してください。

于 2013-07-05T16:48:19.567 に答える
0

簡単!ただ行う:

$( "#sortable_container_id input").click(function() { $(this).focus(); });

「sortable_container_id」を、すべての「sortable」要素のコンテナである要素のIDに置き換えます。

于 2014-10-28T20:50:58.393 に答える
0

かなり古いですが、ここに別の方法があります:

$('#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();
于 2019-05-09T14:20:14.010 に答える