【问题标题】:TextArea with 10 lines and 35 characters per lineTextArea 10 行,每行 35 个字符
【发布时间】:2011-04-08 12:57:57
【问题描述】:

我有一个包含许多元素的 HTML 页面。该页面是可滚动的,这意味着该页面中有一个滚动条。向下到页面,我有一个带有指定行和列属性的 HTML 文本区域。 现在我想要一个简单的 JavaScript 解决方案,它可以帮助我在每次用户输入任何字符时验证以下几点:

  1. textarea的行数不大于10
  2. 每行少于或等于 35 个字符
  3. 如果用户超过了任何特定行的 35 个字符限制,则只有在总行号不超过 10 时,第 36 个字符才会自动从下一行开始,否则将显示错误弹出消息并停在那里。
  4. 用户应该能够修改任何行(可能是最后一行或任何中间行)并且仍然应该遵循以上所有 3 点。

【问题讨论】:

  • 您是否尝试过这样做但失败了?发布错误,我们很乐意提供帮助。

标签: javascript


【解决方案1】:

我使用以下内容来限制我的文本区域中允许的字符数量。 这不仅会计算到最后修剪的字符数量,还会写出您还剩下多少字符。

我认为您现在需要做的就是弄清楚如何添加一个新行(尝试类似 text += "\r\n";)

        function textCounter(txtfield, cntFld, maxlimit){
         var field = document.getElementById(txtfield);
         var countfield = document.getElementById(cntFld);

                if (field.value.length > maxlimit) // if too long...trim it!
                {
                        field.value = field.value.substring(0, maxlimit);
                }else { // otherwise, update 'characters left' counter
                        countfield.innerHTML = maxlimit - field.value.length;
                }
        }

【讨论】:

    【解决方案2】:

    我也做过类似的案例:

    文本区域的最大长度 = 1875 ; 行的最大长度 = 75; 禁用回车,因为超过75的倍数,SW自动换行;

    就是这样,带有onkeydown触发器:

    function wrapTextArea(event,id,maxLineLenght){
    
        // delete and canc
        if((recuperaKeyCode(event)!=8) && (recuperaKeyCode(event)!=46))  {
    
            var field =  document.getElementById(id).value;
            var nextIndex = 0;
            for(var i=0; field.length>nextIndex; i++){
                nextIndex=maxLineLenght*(i+1)+i;
                if(field.length==nextIndex){
                    if(field.charAt(nextIndex)!= "\n"){
                        field=field.substring(0, nextIndex)+"\n"+field.substring(nextIndex, field.lenght);
                    }
                }
            }
            document.getElementById(id).value = field;
        } 
    }
    

    这就是我禁用输入键的方式,其中 key = 13:

    function disableKey(event,key){
    
        if(recuperaKeyCode(event)==key){
            event.preventDefault();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 2023-02-07
      • 1970-01-01
      相关资源
      最近更新 更多