2013-10-02 22 views
5

Potrzebuję znaleźć sposób, aby uniemożliwić użytkownikom wybieranie tekstu w obszarze tekstowym. Celem jest utworzenie niestandardowej klawiatury, która służy do wprowadzania tekstu w obszarze tekstowym. Chcę, aby użytkownicy mogli kliknąć obszar tekstowy, aby ustawić pozycję karetki (która działa już teraz). Nie chcę jednak, aby użytkownicy mogli wybierać określone części wstawionego tekstu, lub przynajmniej nie powinno to być widoczne. Próbowałem już kilku rzeczy, takich jak poniższe CSS, ale bez powodzenia.Wyłącz zaznaczanie tekstu w textarea

textarea { 
    -moz-user-select: none; 
    -webkit-user-select: none; 
    -khtml-user-select: none; 
    user-select: none; 
} 

Rozwiązaniem może być CSS i/lub JavaScript, a to musi działać tylko w Google Chrome. Dzięki!

UPDATE:

Wyłączenie textarea nie będzie pracować dla mnie. Jak już wspomniałem, chcę, aby użytkownicy mogli umieścić karetkę w określonych pozycjach, klikając na lokalizację. Gdybym chciał wyłączyć tekst, funkcja ta zostałaby utracona.

@OPUS: To rozwiązanie nie działa z tekstami. @andi: To prawda @Pointy: zdarzenia na klawiaturze mogą być blokowane. Użytkownicy nie muszą wprowadzać tekstu za pomocą klawiatury, ale za pomocą niestandardowej klawiatury, którą oferuję na stronie. Porównaj to z klawiaturą ekranową. @downvoters: Co jest złego w tym pytaniu?

+0

chyba że "Czytanie tego źle, nie wyłączone, rób to, co chcesz? –

+0

http://stackoverflow.com/questions/4712030/disable-text-selection-and-add-exceptions –

+0

Wyłączenie wyboru tekstu jest łatwe ...naprawdę pytasz, jak wyłączyć zaznaczanie tekstu, nadal pozwalając użytkownikom klikać, aby umieścić kursor w określonym miejscu? – andi

Odpowiedz

4
<textarea unselectable="on" id="my_textarea"></textarea> 

    *.unselectable { 
    -webkit-user-select: none; 
    } 
+0

Nie działa w Firefoksie. – Pointy

+1

to dlatego, że użytkownik chce tego tylko w chrome.Możemy dodać moz-user-select: none –

+1

oops sorry, przegapiłem to i masz rację, że '-moz-user-select: none' działa! Myślę, że to właściwa odpowiedź. – Pointy

-2

Można wyłączyć go z javascript:

document.getElementById("textarea").disable='true'; 
-3
<textarea disabled="readonly"></textarea> 

przetestowany to działa.

+1

OP nie chce uczynić textarea tylko do odczytu, chciałby tylko wyłączyć wybraną funkcję. – Amyth

+0

przez wyłączenie obszaru tekstowego, można dokonać wyboru tekstu –

+0

@AnkurDhanuka wyłączenie elementu spowoduje, że zdarzenia klawiatury nie będą generowane, więc prawdopodobnie nie będą działać dla OP. – Pointy

7

Działa kombinacja właściwości "tylko do odczytu" i "wybierz użytkownika".

Druga reguła wyłącza podświetloną ramkę przy wyborze, co jest rodzajem wyboru wizualnego.

Właściwość "niewybieralna" wydaje się być specyficzna dla Opery/IE.

style:

.noselect { 
    cursor: default; 
    -webkit-user-select: none; 
    -webkit-touch-callout: none; 
    -khtml-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    -o-user-select: none; 
} 

.noselect:focus { 
    outline: none; 
} 

znaczniki:

<textarea class="noselect" readonly="readonly" unselectable="on"></textarea> 

tylko do odczytu może być bardziej odpowiednie niż wyłączone (nadal można przełączać z JS, na kliknij zdarzenie).

-1

Albo można po prostu umieścić disabled = "disabled" w textarea, tak:

<textarea disabled="disabled"></textarea>

0

poniższy kod może pomóc

kod JS:

$(document).ready(function(){ 
    $('#txtInput').bind("cut copy paste",function(e) { 
     e.preventDefault(); 
    }); 
}); 
Powiązane problemy