2014-10-14 12 views
7

तो मैं एक संतोषजनक div (कुंजीपटल के माध्यम से मुख्य चयन के माध्यम से पाठ चयन) की विशेषताएं चाहता हूं, लेकिन मैं उपयोगकर्ता को पाठ संपादित करने की अनुमति नहीं देना चाहता - मुझे लगता है कि readonly="readonly" काम करेगा, लेकिन दुख की बात यह नहीं है ।एक सामग्री बनाएं केवल पढ़ने योग्य div?

क्या हम जानते हैं कि ऐसा करने का कोई तरीका है या नहीं? संतोषजनक div में घोंसला वाले टैग हो सकते हैं (<p>, <h1>)।

मैं एक टेक्स्टरेरा से बचना चाहता हूं (यही वह है), क्योंकि यह मुझे अन्य चीजों को करने की अनुमति नहीं देता है जो मुझे करने में सक्षम होना चाहिए।

क्या जावास्क्रिप्ट के बिना ऐसा करने का कोई अच्छा तरीका है? और यदि ऐसा नहीं है, तो क्या जावास्क्रिप्ट का एक छोटा सा स्निपेट है जो अभी भी प्रतिलिपि बनाने, हाइलाइट करने आदि की अनुमति देगा?

धन्यवाद।

यहाँ एक उदाहरण है: http://codepen.io/anon/pen/dxeAE

+0

कृपया हमें अपनी कोड –

+2

क्या बिना एक div * में अपने अंत उपयोगकर्ता चयन पाठ रोक रहा है दिखाने * 'contenteditable'? मैं क्रोम में टेक्स्ट चयन के लिए कीबोर्ड का उपयोग कर सकता हूं ... – CodingIntrigue

+0

http://codepen.io/anon/pen/dxeAE यहां आप जाते हैं। और आप textarea/contenteditable में जिस तरीके से कर सकते हैं उसे टेक्स्ट का चयन नहीं कर सकते हैं - मुझे संपादन करने के विकल्प के बिना उस कार्यक्षमता की आवश्यकता है :) यहां कुंजी चीज कीबोर्ड के साथ पाठ का चयन कर रही है, माउस नहीं - जो स्पष्ट रूप से बिना किसी पर किया जा सकता है :) –

उत्तर

5

मैं एक jQuery समाधान/वैकल्पिक हल कर दिया। क्या करता है तो डिफ़ॉल्ट कार्यवाही जब एक कुंजी दबाने को रोकने है: तीर कुंजियों का उपयोग

$(document).ready(function(){ 
 
    $("#editor").on("keypress", function(e) { 
 
     e.preventDefault(); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<div id="editor" contenteditable=""> 
 
    <h1>Heading</h1> 
 
    <p>Test</p> 
 
</div>

+0

दिलचस्प, कुंजीपटल पर खाते में बदलाव नहीं होता है + तीर ऊपर, तीर नीचे आदि (मैंने सोचा होगा कि यह इसे अवरुद्ध करेगा)? यह सही समाधान –

+0

नहीं हो सकता है, नहीं, मुझे नहीं पता कि यह क्यों नहीं करता ... यह मेरे लिए आश्चर्यजनक था ...! –

+0

मुझे यह पुष्टि करने से पहले अन्य क्रोमर्स (क्रोम को छोड़कर) में यह कोशिश करनी होगी, यह जवाब है (मुझे आईई 7-11 का परीक्षण करने की आवश्यकता है), लेकिन यह अच्छी तरह से हो सकता है, जब तक कि किसी और के पास कोई अन्य सुझाव उतना ही अच्छा/बेहतर न हो :) –

1

आप भी इस कोशिश कर सकते, सादे जावास्क्रिप्ट समाधान

document.getElementById('div').onkeydown = function (e) { 
    var event = window.event ? window.event : e; 
    return !(!~[37, 38, 39, 40].indexOf(e.keyCode) && !e.ctrlKey); 
} 

यह चयन की अनुमति देता है और इसे कॉपी करना

+0

एज़र्टी/मैक कीबोर्ड के लिए देखें ... –

+1

हाँ, जो मुझे डराता है - कुंजीकोड कभी-कभी –

+0

ओप्स की अपेक्षा नहीं कर सकता .. btw, @AndreasFurster आपका समाधान मोज़िला में काम नहीं करता है (नवीनतम) मेरे लिए –

0

आप div में asp:Panel जोड़ सकते हैं और panel.Enabled = false पैनल के अंदर नियंत्रण उपलब्ध नहीं होंगे।

0

एक div बंद कर दिया या अनलॉक भीतर सभी नियंत्रण बनाने के लिए, इस प्रयास करें:

<div id="lockableDiv"> 
.... 
</div> 

lockDiv = function(lockIt){ 
    if(lockIt){  
     $('#lockableDiv :input').attr('readonly', true); 
    }else{ 
     $('#lockableDiv :input').removeAttr('readonly'); 
    } 
} 
+0

कृपया अधिक जानकारी के साथ संपादित करें। केवल कोड और "इसे आज़माएं" उत्तर निराश हैं, क्योंकि उनमें कोई खोज योग्य सामग्री नहीं है, और यह समझाएं कि किसी को "इसे आजमाएं" क्यों चाहिए। – abarisone

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