01/10/2018, 17:19

Tạo thẻ tag trang web

em thấy ở youtube nhập keyword chỉ cần nhập dấu phẩy là từ đó sẽ hiện như hình dưới… mọi người cho em hỏi là làm thế nào ạ

image

EternalRerosu viết 19:26 ngày 01/10/2018

Gắn sự kiện ‘change’ vào ô input keyword
lấy value của ô đó, tách chuỗi với dấu phẩy, đưa vào hàm tạo tag và đổ ngược ra ô input
nếu nhập linh tinh hay sai định dạng thì thông báo gì đó hoặc không
có thể dùng jquery

Nguyễn Huấn viết 19:33 ngày 01/10/2018

nhưng em không biết làm thế nào để nó hiện lên có thêm dấu x như thế kia ạ

EternalRerosu viết 19:26 ngày 01/10/2018

lúc đưa vào hàm tạo tag thì cần tạo thêm button,
gắn sự kiện onclick cho button xóa đó
khi ấn vào button xóa thì có event.target để có thể biết được element nào đang được click vào

$('.taglist).on('click','.yourTag>button',(function(e){ $(e.target).parent().remove(); });

Hung viết 19:27 ngày 01/10/2018

Phần màu cam là thẻ <div>, giả text input.
Phần màu xám mới là text input thật.
Phần “abc” là inline-block <div>.

9902f21ee18ab7c7a6cabec81ec6c2da97ad7ee9

Việc của bạn là bắt sự kiện change từ input thật.
Kiểm tra value.endWidths(',') trả về true hay không.
Nếu có lấy value.substr(0, value.length - 1) (nguyên chuỗi trừ “,”).
Tạo inline-block <div> mới, bỏ nó kế bên (sibling) “abc” với giá trị vừa tính ở trên.
Gán value = '' để value của input thật rỗng.
Focus vào input thật để nhập tag tiếp theo.

null viết 19:22 ngày 01/10/2018

Nếu bạn hỏi để sài luôn thì google select2.

https://jsfiddle.net/7L3sbrz4/embedded/result,js,html,css
Code này mình định thử xem flex-box có thể làm cái ô màu xám trong cmt của @hungsteve nó tự co về cuối dòng không. Kết quả là chỉ css thì làm chưa được chuẩn vì nó không tính được độ dài ký tự.
Lỡ tay rồi viết thêm mấy dòng cho đầy đủ. Nói thì ngắn, code cũng không nhiều, vậy mà vật vã đến giờ mới xong.

Hung viết 19:34 ngày 01/10/2018

Woa, anh Vọng làm demo luôn.
Cái đó là em chôm ý tưởng từ mobile sang đó anh, chứ web em chưa code.

Bài liên quan
0