2012-12-19 8 views
6

Tôi muốn ngăn đầu vào bổ sung trên ô bảng HTML sau khi đã đạt đến chiều rộng.Ngăn chặn đầu vào trên ô bảng sau khi đạt độ rộng cố định?

Bảng có bố cục cố định, không có lớp bọc và chiều rộng cụ thể. Lỗi tràn hiện được đặt thành ẩn.

Có thể lọc (và cuối cùng là ngăn chặn) đầu vào để nó dừng ở độ rộng cố định để không có tràn (ẩn hoặc cách khác). Tôi hiện đang lọc trở lại vận chuyển bằng cách sử dụng jQuery để các tế bào sẽ không mở rộng đến dòng bổ sung.

Có lẽ tôi đang đòi hỏi quá nhiều từ một bảng HTML ...

+1

Bạn muốn đo chiều rộng bằng cách nào? Chiều rộng CSS của ô hoặc số ký tự nó chứa? –

+0

Bạn đưa ra một câu hỏi thú vị, nhưng ban đầu tôi đã nghĩ để đo lường bằng cách sử dụng chiều rộng. Số lượng ký tự sẽ dễ dàng hơn khi sử dụng câu trả lời của Samuel dưới đây và chỉ kiểm tra độ dài của chuỗi đầu vào. –

Trả lời

3

Một giải pháp khả thi là để sao chép các nội dung di động trên keydown trong một lĩnh vực ẩn và để tính giá trị của lĩnh vực này:

$("table input").on("keydown", function(e) { 
    $("#copy").text(this.value); 

    var width = $("#copy").outerWidth(); 
    console.log("w: " + width); 

    var code = e.keyCode ? e.keyCode : e.which; 
    if (width > 50 && code !== 8 && code !== 49) { 
     return false; 
    } 
}); 

Tôi đã tạo ra một câu đố với giải pháp như vậy: http://jsfiddle.net/scaillerie/hnRjB/2/.

Một điểm cần lưu ý là các font-family và font-size nên giống nhau trong input và trong div để có giá trị chính xác, đó là lý do của sự cai trị CSS:

* { 
    font-family: arial; 
    font-size: 1em; 
} 

Nhưng thay vì *, bạn nên hạn chế để phù hợp với nhu cầu của mình (ví dụ: table input, #copy).


EDIT:

Chỉ cần lưu ý rằng với mã này, người dùng có thể nhập chỉ hơn độ dài đầu vào, nhưng bạn có thể thêm một số "dài" nhân vật đến lĩnh vực sao chép của bạn, để kiểm tra chiều rộng: http://jsfiddle.net/scaillerie/hnRjB/3/.

+0

Điều này có vẻ là câu trả lời tôi đã theo đuổi. Nó có thể phức tạp hơn một chút vì có thể có đồ họa trong ô bảng. Tôi sẽ chỉ phải thích ứng với chiều rộng của đồ họa. –