10/10/2018, 11:02
Giúp mình thực hiện ý tưởng javascript này
Hi.
Mình đang có nhu cầu làm 1 ứng dụng web, trên trang web có 1 đoạn văn bản và 1 textarea, người dùng phải nhập lại chính xác đoạn văn bản vào textarea, và yêu cầu của mình như sau:
- Không thực hiện được việc copy - paste từ đoạn văn bản vào textarea, cái này mục đích là bắt buộc hõ phải gõ vào textarea
- Bắt buộc phải gõ chính xác theo đoạn văn bản, ví dụ nếu gõ sai thì ko thể gõ tiếp được, phải sửa lại cho đúng thì mới gõ tiếp được đoạn sau.
Ý tưởng là vậy, mong các pac giúp đỡ.
Thanks
Mình đang có nhu cầu làm 1 ứng dụng web, trên trang web có 1 đoạn văn bản và 1 textarea, người dùng phải nhập lại chính xác đoạn văn bản vào textarea, và yêu cầu của mình như sau:
- Không thực hiện được việc copy - paste từ đoạn văn bản vào textarea, cái này mục đích là bắt buộc hõ phải gõ vào textarea
- Bắt buộc phải gõ chính xác theo đoạn văn bản, ví dụ nếu gõ sai thì ko thể gõ tiếp được, phải sửa lại cho đúng thì mới gõ tiếp được đoạn sau.
Ý tưởng là vậy, mong các pac giúp đỡ.
Thanks
Bài liên quan





Xem xét yêu cầu thứ nhất, cấm paste, hãy tự hỏi làm thế nào nhận biết có 1 nội dung vừa được paste xuống textarea :
- có 1 sự kiện nào gọi là onpaste phát sinh khi paste tương tự như onclick phát sinh khi click không? Thử google từ khóa "javascript onpaste event".
- nếu 1 trình duyệt không hỗ trợ onpaste thì giải quyết thế nào? Có thể dùng 1 setTimeout liên tục theo dõi nội dung trong textarea và so sánh nó mỗi lúc để nắm bắt những thay đổi khác với khi gõ từng chữ thông thường không ?
Bạn có thể tạm hài lòng với onpaste và câu hỏi thứ hai để lại sau xử lý nâng cao cũng được. Cứ giải quyết xong yêu cầu thứ nhất, rồi sang đến phần kiểm tra so sánh nội dung. Gợi ý là dùng onkeyup, onkeypress. Nội dung là đúng nếu chuỗi trong textarea là là 1 phần trong đoạn văn bản có sẵn, tính từ ký tự đầu tiên. Đơn giản thế thôi
có thể may ra nó ko cho user tương tác với div chứa text.
cái 2 thì khó .
<div oncopy="alert('you cannot copy this text'); return false;" id="content">You cannot copy this text</div> <textarea onpaste="alert('you cannot paste here'); return false;" id="text"> </textarea> <script type="text/javascript"> var content; document.getElementById('text').onkeyup = function() { content = document.getElementById('content').innerHTML; if(content.indexOf(this.value) != 0) { //Xóa kí tự cuối. Nếu bạn muốn chính xác hơn thì get vị trí dấu nháy và xóa kí tự trước nó. this.value = this.value.substr(0, this.value.length - 1); alert('Nhap ky tu khong chinh xac!'); return false; } return true; } </script>đây là 1 trang dùng kỹ thuật tương tự nè và cũng rất nổi tiếng đó
Đua xe đánh chữ 1 trò chơi khá hay đó mà ... chơi thử đi
http://play.typeracer.com/
Để chống copy dán
<body onpaste="return false";>
<body oncopy="return false";>
Giải quyết vấn đề đoạn văn : Nên tách bài viết ra nhiều đoạn với ID khác nhau rồi so sánh, nếu để nguyên cả bài viết rồi so sánh textarea với đoạn văn mình nghĩ hơi khó.
http://play.typeracer.com/?universe=lang_vi