2013-10-02 26 views
5

Tôi cần tìm cách ngăn người dùng chọn văn bản trong vùng văn bản. Mục tiêu là tạo bàn phím tùy chỉnh được sử dụng để nhập văn bản trong vùng văn bản. Tôi muốn người dùng có thể nhấp vào vùng văn bản để đặt vị trí dấu mũ (hiện đã hoạt động). Tuy nhiên, tôi không muốn người dùng có thể chọn một số phần nhất định của văn bản được chèn vào hoặc ít nhất sẽ không có dấu hiệu trực quan về điều này. Tôi đã thử một vài điều, chẳng hạn như CSS sau, nhưng không thành công.Tắt chọn văn bản trong văn bản

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

Giải pháp có thể bằng CSS và/hoặc JavaScript và chỉ hoạt động trong Google Chrome. Cảm ơn!

UPDATE:

Vô hiệu hóa textarea sẽ không làm việc cho tôi. Như tôi đã đề cập, tôi muốn người dùng có thể đặt dấu mũ ở các vị trí nhất định bằng cách nhấp vào vị trí. Nếu tôi vô hiệu hóa vùng văn bản, chức năng này sẽ bị mất.

@OPUS: Giải pháp đó không hoạt động với văn bản. @andi: đúng là @Pointy: các sự kiện bàn phím có thể bị chặn. Người dùng không phải nhập văn bản bằng bàn phím của họ, nhưng với bàn phím tùy chỉnh mà tôi cung cấp trên trang. So sánh nó với một bàn phím trên màn hình. @downvoters: Có gì xấu về câu hỏi này?

+0

Trừ khi tôi đang đọc sai, sẽ không bị vô hiệu hóa làm những gì bạn muốn? –

+0

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

+0

Tắt tính năng chọn văn bản dễ dàng ...bạn đang thực sự hỏi làm thế nào để vô hiệu hóa lựa chọn văn bản trong khi vẫn cho phép người dùng bấm để đặt con trỏ tại một điểm cụ thể? – andi

Trả lời

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

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

Không có hiệu lực trong Firefox. – Pointy

+1

thats vì người dùng chỉ muốn trong chrome.Chúng tôi có thể thêm moz-user-select: none –

+1

oops xin lỗi, tôi đã bỏ lỡ điều đó và bạn cũng đúng rằng '-moz-user-select: none' hoạt động! Tôi nghĩ đây là câu trả lời đúng. – Pointy

-2

Bạn có thể vô hiệu hóa nó với javascript:

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

thử nghiệm nó đang làm việc.

+1

OP không muốn làm cho văn bản chỉ đọc, anh ta chỉ muốn chức năng chọn được tắt. – Amyth

+0

bằng cách vô hiệu hóa văn bản, lựa chọn văn bản có thể được thực hiện –

+0

@AnkurDhanuka vô hiệu hóa phần tử sẽ ngăn các sự kiện bàn phím được tạo ra, do đó có thể sẽ không hoạt động đối với OP. – Pointy

7

Kết hợp thuộc tính "chỉ đọc" và thuộc tính "người dùng chọn" hoạt động.

Quy tắc thứ hai vô hiệu hóa đường viền được đánh dấu khi chọn, đây là một loại lựa chọn trực quan.

Thuộc tính "không thể chọn" có vẻ là Opera/IE cụ thể.

các phong cách:

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

đánh dấu:

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

read-only có thể phù hợp hơn so khuyết tật (chúng ta vẫn có thể chuyển đổi với JS, vào sự kiện nhấp chuột).

-1

Hoặc bạn chỉ có thể đặt disabled = "khuyết tật" trong textarea, như thế này:

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

0

Dưới mã có thể giúp bạn

Mã JS:

$(document).ready(function(){ 
    $('#txtInput').bind("cut copy paste",function(e) { 
     e.preventDefault(); 
    }); 
}); 
Các vấn đề liên quan