2010-07-23 13 views
12

के साथ बातचीत करते समय संतोषजनक में पाठ चयन को संरक्षित करें मेरे पास एक सामग्री में लिंक बनाने के लिए एक jQuery संवाद है। समस्या यह है कि संवाद खोलने के लिए बटन पर क्लिक करने से चयन खो जाता है, संवाद के अंदर पाठ इनपुट भी चयन को खोने का कारण बनता है।jQuery UI संवाद और टेक्स्ट इनपुट

मैं -मोज़-उपयोगकर्ता-चयन के साथ बटन को ठीक कर सकता हूं: कोई नहीं; लेकिन -webkit-user-select: क्रोम में कोई भी काम नहीं करता है।

मैं इसे आईफ्रेम में लपेटकर इनपुट को ठीक कर सकता हूं, लेकिन यह गन्दा है और कहीं भी क्लिक करना चयन को मारता है, उदाहरण के लिए, संवाद को चारों ओर खींचना।

मैंने How to preserve text selection when opening a jQuery dialog पर समाधान देखा है, लेकिन यह संतोषजनक तत्व, केवल वास्तविक इनपुट में कई ब्राउज़रों में काम नहीं करता है।

क्या मेरी समस्या का कोई अच्छा समाधान है?

उत्तर

25

आप संवाद को खोले और बंद होने पर निम्न कार्यों जैसे सरल कार्यों का उपयोग करके चयन को सहेज सकते हैं और पुनर्स्थापित कर सकते हैं। मैं संवाद खोलने और बंद करने में जोड़ने के लिए तंत्र को जानने के लिए jQuery संवाद के साथ पर्याप्त परिचित नहीं हूं।

function saveSelection() { 
    if (window.getSelection) { 
     sel = window.getSelection(); 
     if (sel.getRangeAt && sel.rangeCount) { 
      return sel.getRangeAt(0); 
     } 
    } else if (document.selection && document.selection.createRange) { 
     return document.selection.createRange(); 
    } 
    return null; 
} 

function restoreSelection(range) { 
    if (range) { 
     if (window.getSelection) { 
      sel = window.getSelection(); 
      sel.removeAllRanges(); 
      sel.addRange(range); 
     } else if (document.selection && range.select) { 
      range.select(); 
     } 
    } 
} 
+0

हम कैसे व्यवहार में इन समारोह का उपयोग करते हैं: पहला, saveSelection, आप एक Range या TextRange उद्देश्य यह है कि आप एक चर जो आप बाद में restoreSelection के पास में संग्रहीत करना चाहिए देता है। एक div आइटम पर मान लें

test test
Hussein

+5

धन्यवाद टिम। आप रेंज मास्टर हैं! –

+0

मैंने चयन चेंज घटना का उपयोग किया। यहां देखें http://stackoverflow.com/questions/21730134 मैंने डार्ट का उपयोग किया लेकिन आपको विचार प्राप्त करना चाहिए। –

संबंधित मुद्दे