【问题标题】:how to restrict the user to enter only 250 words in text area?如何限制用户在文本区域中只能输入 250 个单词?
【发布时间】:2015-06-08 06:33:49
【问题描述】:

我创建了一个表单供用户提交摘要。但是在提交时我需要检查天气他们是否添加了超过 250 个单词。我只需要允许 250 个字。如何做到这一点?

我尝试了一些 JavaScript,但它仅适用于 250 个字符。

这是我的代码

function maxlength(element, maxvalue)
   {
  var q = eval("document.upload."+element+".value.length");
   var r = q - maxvalue;
   var msg = "Sorry, you have input "+q+" characters into the "+
  "text area box you just completed. It can return no more than "+
  maxvalue+" words to be processed. Please abbreviate "+
 "your text by at least "+r+" words";
    if (q > maxvalue) alert(msg);
      }

我的文本区域是:

  <tr>
   <td><label>Abstract Details</label> </td>
 <td><label>Please enter data, at most 250 words:</label>
  <br/><textarea rows="6" cols="80"name="box_name"   onChange="maxlength('box_name', 250)" style="width: 257px; height: 131px;">    </textarea></td>
    </tr>
  <tr>

如何限制为 250 字。

提前致谢

【问题讨论】:

标签: javascript php jquery textarea


【解决方案1】:

为防止在 textarea 中超过 250 个字符时提交表单,请将 id="box_id" 添加到您的 textarea 并将此事件添加到表单元素:

onsubmit="return maxlength(getElementById('box_id'), 250);

现在在你的函数中用多个空格分割这个值:

function maxlength(element, maxvalue){
    var q = element.value.split(/[\s]+/).length;
    if(q > maxvalue){
        var r = q - maxvalue;
        alert("Sorry, you have input "+q+" words into the "+
        "text area box you just completed. It can return no more than "+
        maxvalue+" words to be processed. Please abbreviate "+
        "your text by at least "+r+" words");
        return false;
    }
}

要利用新的 HTML 属性,您还可以使用正则表达式将“模式”属性添加到 textarea,将输入限制为 250 个单词:

<textarea rows="6" cols="80"name="box_name"   onChange="maxlength(this, 250)" style="width: 257px; height: 131px;" 
    pattern="^(?:\b\w+\b[\s\r\n]*){1,250}$">
</textarea>

此正则表达式模式取自以下 SO 线程,该线程涉及 250 个单词的类似问题:Limit the number of words in a response with a regular expression

【讨论】:

  • 警报中有一个额外的分号,在“单词”之后 - 我将其删除并进行了测试,现在它可以工作了。我还编辑了您的消息文本 - 将单词“characters”更改为“words”
  • 你现在工作。但是在提交或更改时出现问题,如果我输入超过 250 个单词,它将显示错误消息。但是在关闭该警报消息后,它允许提交。(如果单词超过 250 等等。)如何修复它
  • 我编辑了答案 - 必须在提交时调用该函数并返回 false 以防止提交。
  • 那么我不需要在 textarea 中使用 onchnage 了吗?
  • 你不需要,从 textarea 中删除 onchange,但添加 id 以在表单 onsubmit 事件中引用它。
【解决方案2】:

使用这个:

function maxlength(element, maxvalue)
{
    var value = $(elment).val();
    var words = value.split(' ');

    var msg = 'Sorry, you have input ' + words.length + ' words into the ' +
        'text area you just completed. It can return no more than ' +
        maxvalue + ' words to be processed. Please abbreviate ' +
        'your text by at least ' + (words.length - maxvalue) + ' words';

    if (words.length > maxvalue) {
        alert(msg);
    }
}

【讨论】:

    【解决方案3】:

    如果你想要 250 个字符,你可以将 maxlength 属性设置为 250

    如果你想要 250 个字:

    function maxlength(obj,wordLen){
       var len = obj.value.split(/[\s]+/);
       if(len.length > wordLen){
           alert("You cannot put more than "+wordLen+" words in this text area.");
       }
     }
    

    函数调用:

    onChange="maxlength(this, 250)"
    

    Working Demo

    【讨论】:

      【解决方案4】:

      此语句eval("document.upload." + element + ".value.length") 将返回没有characters 不是words,如果您想限制250 words,那么只需将value of textareaspace 拆分并使用max words allowed 进行验证,然后返回适当的消息:

      你可以试试这个代码。

      function maxlength(element, maxvalue) {
          var q = eval("document.upload." + element + ".value");
          var textLength = q.split(/\S+/).length - 1
          var r = textLength - maxvalue;
          var msg = "Sorry, you have input " + textLength + " characters into the " +
              "text area box you just completed. It can return no more than " + maxvalue + " words to be processed. Please abbreviate " +
              "your text by at least " + r + " words";
          if (textLength > maxvalue) alert(msg);
      }
      

      【讨论】:

        猜你喜欢
        • 2010-11-30
        • 1970-01-01
        • 2016-06-18
        • 2017-02-15
        • 2016-07-13
        • 1970-01-01
        • 1970-01-01
        • 2016-06-14
        • 2012-01-02
        相关资源
        最近更新 更多