2010-10-26 11 views
8

उदाहरण: मेरे पास एक अन-ऑर्डर की गई सूची है जिसमें फ़ॉर्म इनपुट का एक गुच्छा है।jqueryUI सॉर्ट करने योग्य: हैंडलिंग। अक्षम करने योग्य चयन() फॉर्म इनपुट पर

उल .sortable() बनाने के बाद, मैं lable आइटम खींचते समय पाठ चयन को रोकने के लिए sortable (ul) पर .disableSelection() को कॉल करता हूं।

..all ठीक है, लेकिन मैं फिर से/फ़ॉर्म इनपुट पर पाठ चयन सक्षम करने की आवश्यकता .. या रूप मूल रूप से संपादन न करने योग्य है ..

मैं एक आंशिक समाधान पाया @http://forum.jquery.com/topic/jquery-ui-sortable-disableselection-firefox-issue-with-inputs

  • सक्षम चयन, अक्षम चयन अभी भी अन-दस्तावेज प्रतीत होता है: http://wiki.jqueryui.com/Core

कोई विचार?

+0

यदि आप अपना कोड पोस्ट कर सकते हैं, तो शायद मैं यह काम कर सकता हूं ... क्या आपने क्रमबद्ध 'रद्द' विकल्प को देखा है? एक JSFiddle बनाने पर विचार करें जो इसे समझाता है। (www.jsfiddle.net) – Fosco

+0

@ फोस्को। thks। हाल ही में थोड़ा व्यस्त रहा .. मैंने बस एक हैक पोस्ट किया जो हल करता है .. – zack

+1

एक टिप्पणी के रूप में, यह न केवल 'इनपुट' को प्रभावित करता है बल्कि 'चयन' भी करता है। – polkduran

उत्तर

22

हल हो गया। हैक का थोड़ा लेकिन काम करता है! .. कोई टिप्पणी है कि मैं इसे बेहतर कैसे कर सकता हूं?

इनपुट फ़ील्ड पर .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(); 
}); 
0

मैं एक ही समस्या थी। समाधान काफी सरल है:

$("#list").sortable().disableSelection(); 
$("#list").find("input").enableSelect(); 
+1

मैं 'सक्षम चयन()' के लिए jQuery दस्तावेज़ नहीं देखता .. अगर मैं गलत हूं तो कृपया मुझे सही करें, लेकिन मुझे विश्वास नहीं है कि यह अस्तित्व में है! – zack

+0

@zack यह शायद एक टाइपो था। फिक्स्ड। – ArtBIT

+1

सही नाम सक्षम है चयन()। देखें http://api.jqueryui.com/enableSelection/ –

3

jQuery यूआई 1,9

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

चयनकर्ता = इनपुट, मेज, ली ....

+0

बहुत अच्छा लगता है! क्या यह दस्तावेज है, क्या आपके पास एक लिंक है? या एक jsFiddle? ..नहीं कि मैं संदेहजनक हूं – zack

4

जैक के पद से एक छोटी सी सुधार - 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(); 
+0

यह केवल आईई में काम करता है? मैंने एफएफ में कोशिश की लेकिन कोई भाग्य नहीं। – c0deNinja

+0

यह हर जगह काम करता है क्योंकि jQuery क्रॉसप्लेटफार्म है :) वास्तव में क्या काम नहीं करता है? –

+1

टेक्स्ट इनपुट चयन योग्य नहीं है। – c0deNinja

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 द्वारा और किसी दिन दूर जाना होगा।

0

आसान! बस करो:

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

और तत्व सभी "sortable" तत्वों के कंटेनर है कि की आईडी के साथ "sortable_container_id" की जगह।

+0

यह प्रश्न 2010 से है। यहां जवाब पढ़ने की संभावना बहुत कम है। – Andreas