Limiting Characters per Line in a Textarea

前端 未结 1 1992
小蘑菇
小蘑菇 2021-02-09 22:54

I have been searching all weekend for the solution to this quandry and have yet to find a solution that works correctly. What I am trying to acchieve is to limit the number of c

1条回答
  •  青春惊慌失措
    2021-02-09 23:56

    Below is a sample snapshot of the problem that you're trying to solve:

    • 4 lines in the textarea (Limit this on the textarea itself with rows="4")
    • Lines 1, 2, and 3 are limited to 24 characters
    • Line 4 will have an unlimited number of characters

    Snapshot of the textarea:

    123456789012345678901234
    123456789012345678902333
    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));
    });
    

    This can be accomplished using a keypress event. When the keypress event fires, get the current value of the textbox and split the value into an array using the \n line break character as a delimiter.

    • The length of the array tells you how many lines you have. If you've exceeded those lines, we fire an alert.
    • The length of each individual string inside the array represents the length of each line. We use a for loop to check the first 3 lines. If we exceed the length of 24, we fire an alert.
    • We ignore the last iteration of the loop, since we aren't concerned with the length of the last line.

    This is not designed to be a complete solution, but this will definitely get you started and provide you with something that you can modify to suit your needs. Good luck!

    0 讨论(0)
提交回复
热议问题