jQuery nhận văn bản văn bản


486

Gần đây tôi đã bắt đầu chơi với jQuery và đã theo dõi một vài hướng dẫn. Bây giờ tôi cảm thấy hơi thành thạo khi sử dụng nó (nó khá dễ) và tôi nghĩ sẽ thật tuyệt nếu tôi có thể tạo một 'bàn điều khiển' trên trang web của mình (như trong, bạn nhấn phím `giống như bạn làm trong các trò chơi FPS , v.v.) và sau đó đưa Ajax trở lại máy chủ để thực hiện công việc.

Ban đầu tôi nghĩ cách tốt nhất là lấy văn bản bên trong textarea và sau đó tách nó ra, hoặc tôi nên sử dụng sự kiện keyup, chuyển mã khóa được trả về thành ký tự ASCII, nối ký tự vào chuỗi và gửi chuỗi vào máy chủ (sau đó làm trống chuỗi).

Tôi không thể tìm thấy bất kỳ thông tin nào về việc nhận văn bản từ văn bản, tất cả những gì tôi nhận được là thông tin chính. Ngoài ra, làm cách nào tôi có thể chuyển đổi mã khóa được trả về thành ký tự ASCII?

Câu trả lời:


713

Tại sao bạn muốn chuyển đổi các nét chính thành văn bản? Thêm một nút gửi văn bản bên trong textarea đến máy chủ khi nhấp vào. Bạn có thể lấy văn bản bằng thuộc tính value như poster trước đó đã chỉ ra hoặc sử dụng API của jQuery:

$('input#mybutton').click(function() {
    var text = $('textarea#mytextarea').val();
    //send to server and process response
});

2
Bởi vì textarea sẽ chứa nhiều hơn chỉ là văn bản cần thiết. (đó là bàn điều khiển, trực quan hóa dấu nhắc lệnh). Cảm ơn thông tin về chức năng val. :)
RodgerB

Bạn có thể xử lý văn bản bằng cách sử dụng javascript. Điểm trả về mã đột quỵ chính là gì?
Eran Galperin

Vấn đề là, imo, có được mã đột quỵ chính sẽ hiệu quả hơn sau đó phân tách textarea bằng một dấu phân cách (hình ảnh một mảng văn bản có thể lớn).
RodgerB

2
Xin lỗi, tôi không thể hình dung được kịch bản trong đó có thể đúng ... có thể nếu bạn chỉnh sửa bài đăng gốc của mình và thêm một ví dụ, nó sẽ giúp mọi người cố gắng trả lời
Eran Galperin

Tôi đã quên phần 'textarea' trước id thẻ html
Yasith Mitchuddhaka

36

Trường hợp thường là hàm văn bản bạn sử dụng (ví dụ: trong div, v.v.) thì đối với vùng văn bản, nó là val

được:

$('#myTextBox').val();

bộ:

$('#myTextBox').val('new value');

24

Bạn nên có một div chỉ chứa các thông điệp console, nghĩa là các lệnh trước đó và đầu ra của chúng. Và bên dưới đặt một đầu vào hoặc textarea chỉ giữ lệnh bạn đang gõ.

-------------------------------
| consle output ...           |
| more output                 |
| prevous commands and data   |
-------------------------------
> This is an input box.

Bằng cách đó, bạn chỉ cần gửi giá trị của hộp đầu vào đến máy chủ để xử lý và nối thêm kết quả vào div tin nhắn bảng điều khiển.


Vâng, chính xác những gì tôi đã nghĩ. Đó là giải pháp sạch duy nhất không liên quan đến việc phân tích cú pháp đầu vào từ đầu ra (dại dột thử - điều gì xảy ra nếu người dùng gõ vào một số "đầu ra") hoặc cố gắng xây dựng một chuỗi từ các sự kiện gõ phím (thử một cách ngu ngốc - những gì về không gian, vv?).
Nick Perkins

3
Một vấn đề XY khác trên SO. Đây rõ ràng là giải pháp tốt nhất cho 'X' trong vấn đề của anh ấy.
Reimius

14

Thông thường, đó là tài sản giá trị

testArea.value

Hoặc có điều gì tôi đang thiếu trong những gì bạn cần?


Tôi thực sự hy vọng một sự kiện được trao đổi văn bản hoặc một cái gì đó dọc theo dòng sẽ được gọi (tôi có thể làm điều này khá dễ dàng với sự kiện keyup nào). Tôi nghĩ rằng tôi sẽ sử dụng sự kiện keyup, nhưng bạn có biết cách chuyển đổi mã khóa thành char ASCII không? Cảm ơn. :)
RodgerB

8

Tôi đã tìm ra rằng tôi có thể chuyển đổi keyCode của sự kiện thành một ký tự bằng cách sử dụng chức năng sau:

var char = String.fromCharCode(v_code);

Sau đó tôi sẽ nối ký tự đó vào một chuỗi và khi nhấn phím enter, hãy gửi chuỗi đến máy chủ. Tôi xin lỗi nếu câu hỏi của tôi có vẻ hơi khó hiểu và tiêu đề có nghĩa là một cái gì đó gần như hoàn toàn lạc đề, đó là vào sáng sớm và tôi chưa ăn sáng;).

Cảm ơn vì tất cả sự giúp đỡ của mọi người.


7

Methinks từ "console" đang gây nhầm lẫn.

Nếu bạn muốn mô phỏng bảng điều khiển song công toàn bộ / nửa kiểu cũ, bạn sẽ sử dụng một cái gì đó như thế này:

$('console').keyup(function(event){
    $.get("url", { keyCode: event.which }, ... );
    return true;
});

event.which có phím được nhấn. Để xử lý backspace, event.which === 8.



0

Đọc giá trị textarea và chuyển đổi mã-char:

Và bên dưới Quake đẹp như giao diện điều khiển chỉ trên div-s :)


0

bạn có thể lấy dữ liệu textarea theo tên và id

// by name
<textarea name="comment"></textarea>
let text_area_data = $('textarea[name="comment"]').val();

// by id
<textarea id="comment" name="comment"></textarea>
let text_area_data = $('textarea#comment').val();
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.