2013-10-02 75 views
5

我需要找到一種方法來防止用戶在textarea中選擇文本。 目標是創建一個用於在textarea中輸入文本的自定義鍵盤。我希望用戶能夠點擊textarea來設置插入位置(現在已經在運行)。但是,我不希望用戶能夠選擇插入文本的某些部分,或者至少應該沒有可視的指示。 我已經嘗試了一些東西,比如下面的CSS,但沒有成功。在textarea中禁用文本選擇

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

該解決方案可以在CSS和/或JavaScript中,它只能在Google Chrome中工作。 謝謝!

UPDATE:

禁用的textarea不會爲我工作。正如我所提到的,我希望用戶能夠通過點擊位置將插入符號放在特定位置。如果我禁用textarea,這個功能將會丟失。

@OPUS:該解決方案不適用於textareas。 @andi:沒錯 @Pointy:鍵盤事件可以被阻止。用戶不必使用鍵盤輸入文本,而是使用我在頁面上提供的自定義鍵盤。將它與屏幕上的鍵盤進行比較。 @downvoters:這個問題有什麼不好?

+0

除非我'讀這個錯誤,不會禁用做你想要的? –

+0

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

+0

禁用文本選擇很容易...你真的在問如何禁用文本選擇,同時仍然允許用戶點擊以將光標放置在特定點上? – andi

回答

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

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

在Firefox中無效。 – Pointy

+1

這是因爲用戶只需要在chrome.We可以添加moz-user-select:none –

+1

oops對不起,我錯過了,而且你也是正確的:'-moz-user-select:none'正常工作!我認爲這是正確的答案。 – Pointy

-2

您可以用JavaScript禁用:

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

測試其工作正常。

+1

OP不想讓textarea只讀,他只想要禁用選擇功能。 – Amyth

+0

通過禁用文本區域,文本選擇可以完成 –

+0

@AnkurDhanuka禁用該元素將防止生成鍵盤事件,因此可能不適用於OP。 – Pointy

7

「只讀」屬性和「用戶選擇」屬性的結合起作用。

第二條規則禁用選擇上的高亮邊框,這是一種視覺選擇。

「不可選」屬性似乎是Opera/IE特有的。

的樣式:

.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; 
} 

標記:

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

只讀可能比殘疾人更適合(人們仍然可以用JS切換,在點擊事件)。

-1

或者你可以把禁用= 「禁用」,在文本區域,像這樣:

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

0

下面的代碼可以幫助你

JS代碼:

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