Có cách nào để có một sự kiện văn bản kích hoạt sự kiện nếu người dùng thay đổi dòng chữ trên, bằng cách nhấp hoặc sử dụng mũi tên lên/xuống? Hay điều này không thể thực hiện được trong Javascript? Tôi đã tìm cách tìm/thiết lập vị trí hiện tại của dấu mũ, nhưng đó không phải là những gì tôi cần ...Sự kiện kích hoạt khi dấu mũ di chuyển giữa các dòng trong textarea
Trả lời
Có vẻ như bạn cần đăng ký một vài sự kiện cho vùng văn bản của bạn. trên đầu của tôi, một sự kiện bấm, và một sự kiện nhấn phím với nhiều giá trị mã phím. Bạn có cần phải sử dụng javascript tinh khiết, hoặc bạn có một số thư viện javascript để sử dụng?
Bạn có cần trợ giúp đăng ký sự kiện không? hoặc bạn cần trợ giúp tìm vị trí dấu mũ trong một trong các sự kiện? (xem liên kết của Andy cho điều đó) hoặc là câu trả lời cho cả hai câu hỏi của tôi "có"?
chỉnh sửa
ok, từ ý kiến mà bạn đang bạn ok với jquery, và các plugin fieldselection ngăn bạn lại phát minh ra bánh xe.
- xác định mọi phím, nhấp chuột, sao chép? các sự kiện có thể di chuyển dấu mũ trong trường văn bản. Navigate and select portions of text, wikipedia
- trong sự kiện, sử dụng plugin chọn trường để nhận vị trí dấu mũ mới.
- sử dụng vị trí hiện tại caret & & font size & hộp & văn bản kích thước vật lý & đếm & linebreak để xác định xem bạn đã chuyển sang một dòng mới.
- nếu bạn đã chuyển đổi dòng, kích hoạt sự kiện jQuery tùy chỉnh để thực hiện công việc bạn muốn.
// jQuery 1,7
$(document).ready(function(){
var currentLine = -1;
$("#textAreaID").on("keypress", function(evt){
if(evt.which === 40 || ...){
//down arrow key, enter key, page down key, all will move the caret to a newline
$(this).trigger("newline");
}else{
//a ton of text in a fixed width textarea will move the cursor to a newline
$(this).trigger("checkForNewline");
}
}).on("click checkForNewline", function(evt){
var jqElem = $(this);
//fieldSelection plugin call
var range = jqElem.getSelection();
if(range["row"] && range["row"] !== currentLine){
currentLine = range["row"];
jqElem.trigger("newline");
}else{
var handTypedNewlines = jqElem.val().split(/\r\n|\r|\n/);
var userTypedRowcounts = Math.floor(wholeString.length/jqElem.cols) + (handTypedNewlines instanceof 'object')?handTypedNewlines.length:0;
if(userTypedRowcounts != currentLine){
currentLine = userTypedRowcounts;
jqElem.trigger("newline");
}
}
}).on("newline", function(evt){
// do your work, caret is on a newline.
});
});
tham chiếu stack overflow.
http://stackoverflow.com/q/1937120/176818 và đây là ví dụ về plugin chọn trường jQuery http://laboratorium.0xab.cd/jquery/fieldselection/0.2.3-test/test.html – DefyGravity
Xem nhận xét của tôi ở trên ...Vì vậy, nó có vẻ như nó sẽ là khả thi, và cách để làm điều đó là bằng cách theo dõi các nhấp chuột và bấm phím và sau đó so sánh dòng trước và hiện tại và xem nếu có một sự thay đổi? Tôi có thể hình dung ra, một khi tôi thấy chiến lược. – NumerousHats
Và có, tôi không phản đối thư viện. Tôi gần như chắc chắn sẽ được sử dụng jQuery cho các khía cạnh khác của dự án (nếu tôi chọn để làm điều đó như là một webapp ...) – NumerousHats
- 1. d3 - kích hoạt sự kiện di chuột
- 2. Sự kiện CLICK CLICK không kích hoạt (khi chuyển sang di chuột, nó không hoạt động)
- 3. Sự kiện MouseLeave kích hoạt khi di chuyển qua ScrollBar của điều khiển
- 4. Tìm vị trí dấu mũ trong textarea theo pixel
- 5. Di chuột qua các sự kiện không được kích hoạt khi sử dụng jQuery ui.sortable
- 6. Tạo một textarea tất cả các mũ?
- 7. Javascript: Nhiều sự kiện mouseout kích hoạt
- 8. Ngăn sự kiện nhấp chuột kích hoạt khi sự kiện dblclick kích hoạt
- 9. sự kiện trênTouch đôi khi không kích hoạt ACTION_POINTER_DOWN
- 10. Sự kiện di chuyển chuột trong JPanel
- 11. Sự khác biệt giữa Tải sự kiện, Kích hoạt sự kiện và Nhập sự kiện trong Biểu mẫu
- 12. Bật di chuyển dọc trên textarea
- 13. Di chuyển phần tử hoạt động mất sự kiện di chuột trong trình khám phá internet
- 14. Backbone Sự kiện: đăng nhập tất cả các sự kiện khi chúng được kích hoạt
- 15. Kích hoạt sự kiện khi người dùng điều hướng đi
- 16. Chữ thập duyệt "nhảy vào"/"di chuyển" textarea
- 17. kích hoạt sự kiện "dán" trong Javascript
- 18. Sự kiện di chuột QListView?
- 19. Mac OSX Java: Nhận các sự kiện chuột khi không được kích hoạt
- 20. Sự kiện JAVAFX được kích hoạt khi chọn hộp kiểm
- 21. Có thể kích hoạt sự kiện nhấp chuột khi di chuột không?
- 22. Các sự kiện Jquery .bind được kích hoạt khi chụp sự kiện hoặc bong bóng sự kiện
- 23. javascript: Di chuyển dấu nháy đến ký tự cuối cùng
- 24. Sự kiện nào được kích hoạt khi chuyển bố cục kb trong X.org
- 25. Kích hoạt sự kiện onItemDisclosure gây ra sự kiện itemtap để kích hoạt
- 26. Lỗi kích hoạt sự kiện tùy chỉnh kích hoạt JQuery
- 27. Đánh dấu Rails di chuyển khi di chuyển
- 28. Sự kiện LongClick cũng kích hoạt Sự kiện nhấp
- 29. Làm thế nào để bạn di chuyển theo chương trình của một TextArea Flex đến cùng?
- 30. Tại sao sự kiện 'window.resize' kích hoạt khi thay đổi các tab trong Chrome (6.0.472.55)?
thể trùng lặp của [Tìm giá trị của dòng hiện tại của một
@AndyE Có sự khác biệt đáng kể giữa \ n và dòng mà người dùng nhìn thấy trong vùng văn bản. Ví dụ: nhận xét này không có dòng đơn mới nhưng tôi đã ở dòng thứ ba của vùng văn bản :) – Esailija
@Esailija: OP không đủ cụ thể để chúng tôi nói, nhưng đáng giá chỉ trong trường hợp đó là những gì anh ta đang tìm kiếm. Đó là lý do tại sao bình luận nói * "có thể trùng lặp ..." *. –