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
viết 13:18 ngày 10/10/2018
Mình thật sự không thích ý tưởng này vì nó tỏ ra khắt khe đối với người sử dụng. Nhưng về coding, ý tưởng này là có thể thực hiện được.

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
ngoc_viet08 viết 13:12 ngày 10/10/2018
có thể để 1 div trong suốt đè lên bên trên text ko nhỉ ?
có thể may ra nó ko cho user tương tác với div chứa text.

cái 2 thì khó .
BnoL viết 13:10 ngày 10/10/2018
Có định đạng bold, italic, canh hàng gì k bạn. hay thuần là plain text? Nếu là plain text thì đơn giản vầy thui...

Code:
<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>
thuyduongcd viết 13:12 ngày 10/10/2018
Làm vậy để làm gì không biết. Disable js rồi paste vô tư. Thay vì cố "làm khó" người dùng thì hãy tìm cách nào thuận tiện cho người dùng nhất. Đó mới là một phong cách làm web thông minh.
chesterben viết 13:07 ngày 10/10/2018
Giờ viết web thậm chí người ta còn show cả source-code (Github, Bitbucket) cho mọi người cùng xem chớ nói gì là mấy thứ lặt vặt. Usability là thứ nên được quan tâm hàng đầu nếu muốn sống lâu. Còn mấy cái thủ thuật với cái máy (SEO) thì chỉ giúp sống thoi thóp thôi
diepnghitinh viết 13:14 ngày 10/10/2018
Được gửi bởi thuyduongcd
Làm vậy để làm gì không biết. Disable js rồi paste vô tư. Thay vì cố "làm khó" người dùng thì hãy tìm cách nào thuận tiện cho người dùng nhất. Đó mới là một phong cách làm web thông minh.
ông này chả hiểu gì hết ?
đâ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/
VnVision viết 13:18 ngày 10/10/2018
Được gửi bởi diepnghitinh
ông này chả hiểu gì hết ?
đâ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/
Trò này hay phết nhỉ. Tiếc là ko có thời gian chứ ko làm một cái cho ng Việt chơi
haicop viết 13:12 ngày 10/10/2018
Vấn đề người ta cần để làm ứng dụng gì đó liên quan đến đánh máy, không thì chủ thớt đã ko lên nhờ. Mình search trên google đc mấy cái này.

Để 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ó.
leetinhf viết 13:03 ngày 10/10/2018
Được gửi bởi VnVision
Trò này hay phết nhỉ. Tiếc là ko có thời gian chứ ko làm một cái cho ng Việt chơi
Có ngôn ngữ tiếng Việt luôn mà, có cả xếp hạng tốc độ đánh chữ nữa :">x_x

http://play.typeracer.com/?universe=lang_vi
Bài liên quan
0