2015-05-16 3 views
5

У меня есть div с некоторым текстом, и я хочу, когда курсор наведет этот div, чтобы выбрать текст. Если я позволю этому div как есть, при попытке выбрать все (CTRL + A), я выбираю все содержимое страницы, что означает весь текст тела.div contentEditable но Readonly

Чтобы избавиться от этого, мне нужно использовать атрибут contenteditable для этого div.

Но я не хочу, чтобы люди, чтобы изменить текст/копировать/вырезать и так далее

я пытаюсь использовать для чтения этого DIV, но не работает.

Любые советы, пожалуйста?

PS1: У этого div есть и другие теги внутри (содержимое html), но я не думаю, что это проблема.

PS2: Пример: jsfiddle.net/msakamoto_sf/wfae8hzv/ - но с проблемой. Вы можете вырезать текст :(

+2

использование 'contenteditable =" false "' не позволит разрезать текст. – ketan

+0

Да и не разрешено выбирать текст из div с помощью CTRL + A. Пожалуйста, прочитайте мое сообщение. – Simona

+0

О, хорошо, это проблема в хроме. Я проверяю его в firefox. В firefox он работает. – ketan

ответ

1

Вы можете запретить пользователю вырезать, обработав событие «вырезать» и вызвав его метод preventDefault(). Это предотвратит вырезание с помощью любого пользовательского ввода (включая контекстное меню браузера или меню редактирования), а не только через специальный комбинат клавиш ция.

Этот пример использует JQuery, потому что ваш jsFiddle использует его:

$("#editablediv").on("cut", function(e) { 
    e.preventDefault(); 
}); 
+1

не прекратит редактирования IME. – Tom

+0

Для дальнейшей подражания 'textarea' с атрибутом' readonly' вам также нужно будет 'preventDefault()' на события 'paste' и' keypress' вместе с 'cut'. –

0

Чтобы предотвратить Ctrl + X (вырезать) из DIV необходимо использовать следующие JQuery:.

if (event.ctrlKey && event.keyCode === 88) 
{ 
    return false; 
} 

Это предотвратит вырезать текст из DIV

Проверить Fiddle Here.

+0

Это не будет охватывать случай, когда пользователь использует параметр «Вырезать» в контекстном меню браузера или в меню редактирования. –

0

набор contenteditable ложь, и она должна работать !! так просто.

использовать атрибут contenteditable для div, чтобы сделать его редактируемым или нет и использовать readonly attr для элементов ввода формы.

<element contenteditable="true|false"> 

<input readonly="readonly" /> 
2

Использование event.metaKey в keydown случае, чтобы проверить, если Ctrl (или CMD на макинтош) ключи нажаты. Вы также должны отключить события cut и paste.

<div 
    contenteditable="true" 
    oncut="return false" 
    onpaste="return false" 
    onkeydown="if(event.metaKey) return true; return false;"> 
    content goes here 
</div> 
Смежные вопросы