2010-09-27 27 views
12

những gì tôi đang cố gắng làm là chuyển đổi nội dung TextArea thành mã html hợp lệ. Giả sử bạn nhập bên trong TextArea và sau đó bạn nhấn một nút hiển thị văn bản đã nhập bên trong một phần tử. Nếu bạn đã nhập nội dung nào đó giống như bên trong TextArea:jQuery: Chuyển nội dung TextArea thành chuỗi html và ngược lại

Xin chào mọi người!
Bạn có thích jQuery không?
Tôi làm!

Kết quả là chuỗi bạn cần phải đặt bên trong 'tố' là:

Hi folks!<br>Do you like jQuery?<br>I do! 

Đó là bởi vì các dòng mới bên trong TextArea phải được chuyển đổi sang thẻ <br>!

Điều tương tự cũng nên happend nếu bạn muốn lấy html của nguyên tố này và đặt nó bên trong lĩnh vực đầu vào TextArea, ví dụ:

Hi folks!<br>Do you like jQuery?<br>I do! 

nên được chuyển đổi sang:

Hi mọi người!
Bạn có thích jQuery không?
Tôi làm!

Vì vậy, có cách nào để chuyển đổi chuỗi thành chuỗi html (và ngược lại) hoặc tôi có nên tự viết một hàm không?

Cảm ơn trước!

+1

Bạn có thể đánh dấu mã nội tuyến bằng backticks '\' ' –

Trả lời

1

Cân nhắc xem xét trình chỉnh sửa đánh dấu. Stack overflow sử dụng một phiên bản sửa đổi của một này: http://wmd-editor.com/

8

Vâng, đó là không phải là rất khó khăn:

$('#element').html($('textarea').html().replace(/\n/g, "<br />")); 
+1

Vâng, tôi đã tự hỏi nếu một chức năng chuyển đổi jQuery đã được viết, thay thế thẻ bằng" tay "là hiển nhiên :) – iakko

+0

Điều đó trả lời một phần của nó, nhưng di chuyển văn bản từ #element đối với vùng văn bản không có gì ngoài các dòng mới là thứ i mực những gì OP đang tìm kiếm. – yaz

+0

Tôi đã phải sử dụng val() thay vì html(), như sau: $ ('#_ b'). Html ($ ('#_ a'). Val(). Thay thế (/ \ n/g, "
")); – itsmikem

14

Với phong cách thích hợp trên nguyên tố này, bạn không nên cần phải chuyển đổi bất cứ điều gì. Sử dụng CSS trắng-không gian tài sản với giá trị thiết lập để trước, bất kỳ màu trắng-không gian trong phần tử sẽ xuất hiện chính xác như nó trong textarea:

#myElement { white-space: pre; } 

Ví dụ: http://jsfiddle.net/TkpSu/

+0

cảm ơn. Mặc dù đó là một giải pháp đơn giản. nhưng tôi đã phải lãng phí nhiều lần cho giải pháp này. –

+0

Chi tiết nhỏ: Trong hầu hết các trường hợp, '#myElement {khoảng trống trắng: được bọc trước; } 'có thể phù hợp hơn để tránh nội dung tràn nếu người dùng gửi văn bản dài mà không có dòng mới. – Johannes

Các vấn đề liên quan