2012-05-21 45 views
5

Tôi đã tìm kiếm tất cả các ngày cuối tuần cho giải pháp cho quandry này và vẫn chưa tìm được giải pháp hoạt động chính xác. Những gì tôi đang cố gắng để acchieve là để hạn chế số lượng charatcers trên mỗi dòng trong một textarea - không giới hạn chúng giống hệt nhau, nhưng một số khác nhau của các ký tự trên mỗi dòng lựa chọn của tôi.Giới hạn các ký tự trên mỗi dòng trong một Textarea

Ví dụ:

  1. Tôi muốn chỉ có 4 dòng trong textarea tôi
  2. Đường dây 1,2 và 3 sẽ được giới hạn ở 24 ký tự
  3. Dòng 4 sẽ có một số lượng không giới hạn của các ký tự

Điều này có thể với văn bản hay không, hoặc có cách nào khác để thực hiện i với Div hay gì đó không. Tôi nhận ra rằng điều này có trong mọi khả năng đã được đề cập trước đó, nhưng để tìm một kịch bản làm việc thực tế bao gồm tiêu chí này đã tỏ ra vô cùng khó khăn và tôi không có kỹ năng cần thiết để có được những kết quả này.

Cảm ơn

+0

Nếu bạn hỏi nếu có thể, có thể. nhưng bạn đã thử cái gì? – Joseph

+0

bạn đang cố gắng ảnh hưởng đến điều gì? nếu tất cả chúng không phải được kết nối sử dụng 4 đầu vào, bạn có thể giới hạn chúng theo bất kỳ cách nào bạn muốn.bạn thậm chí có thể giả mạo với đầu vào css 4 trông giống như một và có vẻ như một giải pháp tốt hơn – Ryan

+0

Bạn có thể chia nhỏ bằng ngắt dòng và phát hiện số ký tự. Nhưng vấn đề là bạn không thể kiểm soát 'dòng' mỗi câu nói, được quyết định bởi kích thước phông chữ, khoảng cách chữ vv Một dòng trên một máy trên một hệ điều hành nhất định có thể khác với một dòng trên máy khác với hệ điều hành khác. Ví dụ của Ryan là một ý tưởng tốt hơn. –

Trả lời

6

Dưới đây là ảnh chụp mẫu của các vấn đề mà bạn đang cố gắng để giải quyết:

  • 4 dòng trong textarea (Hạn chế này trên textarea bản thân với rows = "4")
  • Dòng 1, 2, và 3 được giới hạn 24 ký tự
  • Dòng 4 sẽ có một số lượng không giới hạn các ký tự

Snapshot của textarea:

123456789
123456789
232323232323232323323232 
23232323232323232323236464536543654643 

JavaScript:

$('#your-input').keypress(function() { 
    var text = $(this).val(); 
    var arr = text.split("\n"); 

    if(arr.length > 5) { 
     alert("You've exceeded the 4 line limit!"); 
     event.preventDefault(); // prevent characters from appearing 
    } else { 
     for(var i = 0; i < arr.length; i++) { 
      if(arr[i].length > 24 && i < 3) { 
       alert("Length exceeded in line 1, 2, or 3!"); 
       event.preventDefault(); // prevent characters from appearing 
      } 
     } 
    } 

    console.log(arr.length + " : " + JSON.stringify(arr)); 
}); 

Điều này có thể được thực hiện bằng cách sử dụng sự kiện bấm phím. Khi sự kiện nhấn phím kích hoạt, nhận giá trị hiện tại của hộp văn bản và chia giá trị thành mảng bằng cách sử dụng ký tự ngắt dòng \n làm dấu phân tách.

  • Độ dài của mảng cho bạn biết số dòng bạn có. Nếu bạn đã vượt quá các dòng đó, chúng tôi sẽ cảnh báo.
  • Độ dài của mỗi chuỗi riêng lẻ bên trong mảng đại diện cho độ dài của mỗi dòng. Chúng tôi sử dụng vòng lặp for để kiểm tra 3 dòng đầu tiên. Nếu chúng tôi vượt quá độ dài 24, chúng tôi sẽ cảnh báo.
  • Chúng tôi bỏ qua lần lặp cuối cùng của vòng lặp, vì chúng tôi không quan tâm đến độ dài của dòng cuối cùng.

Đây không phải là giải pháp hoàn chỉnh, nhưng điều này chắc chắn sẽ giúp bạn bắt đầu và cung cấp cho bạn thứ gì đó mà bạn có thể sửa đổi cho phù hợp với nhu cầu của mình. Chúc may mắn!

+0

Tôi khá chắc chắn 'cols' kiểm soát chiều rộng, không phải dòng/chiều cao. – Daedalus

+0

@Daedalus - Cảm ơn :) Gần như đã gọi nó là một đêm :) Đã sửa lỗi! – jmort253

+0

Chào mừng bạn :) có một giấc ngủ ngon khi bạn đến đó, heh – Daedalus

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