2015-05-16 29 views
5

Mam div z tekstem i chcę, gdy kursor jest najechanie na ten div, aby wybrać tekst. Jeśli zostawię ten element taki, jaki jest, próbując wybrać wszystkie (CTRL + A), wybieram całą zawartość strony, co oznacza cały tekst.div contentEditable ale Readonly

Aby się tego pozbyć, muszę użyć atrybutu contenteditable tego elementu div.

Ale nie chcę, aby ludzie, aby zmienić tekst/Kopiuj/Wytnij i tak dalej

Staram się używać tylko do odczytu dla tego div, ale nie działa.

Masz radę?

PS1: Ten element div zawiera również inne znaczniki (zawartość HTML), ale nie sądzę, że jest to problem.

PS2: Przykład jest tutaj: jsfiddle.net/msakamoto_sf/wfae8hzv/ - ale z pewnym problemem. Można wyciąć tekst :(

+2

użycie 'contenteditable =" false "' nie pozwoli ci wyciąć tekstu. – ketan

+0

Tak, i nie wolno wybrać tekstu z elementu div za pomocą CTRL + A. Proszę przeczytać mój post. – Simona

+0

Ohh ok to problem w chrome. Sprawdzam to w firefoxie. W firefoxie działa. – ketan

Odpowiedz

1

Możesz uniemożliwić użytkownikowi cięcie poprzez obsługę zdarzenia "cut" i wywołanie jego metody preventDefault(). Zapobiegnie to obcięciu przy dowolnym wprowadzeniu przez użytkownika (w tym menu kontekstowym przeglądarki lub menu edycji), a nie tylko za pomocą określonego kombinatora klawiszy acji.

Ten przykład używa jQuery ponieważ jsFiddle używa go:

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

nie spowoduje zatrzymania edycji IME. – Tom

+0

Aby dalej naśladować 'textarea' z atrybutem' readonly', musisz również 'preventDefault()' na 'paste' i' keypress' events wraz z 'cut'. –

0

Aby zapobiec Ctrl + X (cut) z div trzeba użyć następujących JQuery.

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

To zapobiegnie wyciąć tekst z div

Sprawdź Fiddle Here.

+0

Nie obejmuje to przypadku, gdy użytkownik korzysta z opcji "Wytnij" z menu kontekstowego przeglądarki lub menu edycji. –

0

zestaw contentEditable false i powinno działać !! tak proste.

użyj atrybutu contenteditable dla div, aby można było edytować lub nie. i użyj readonly attr dla elementów wejściowych formularza.

<element contenteditable="true|false"> 

<input readonly="readonly" /> 
2

Zastosowanie event.metaKey w przypadku keydown aby sprawdzić, czy klawisz Ctrl (lub Cmd na Macu) klawisze są wciskane. Musisz również wyłączyć zdarzenia cut i paste.

Powiązane problemy