1

各行に最大 15 文字の textarea に最大 5 行を入力してもらいたい。その後、ユーザーは、矢印、Del、Backspace など以外のキーを押さないようにすることができます。

これは、TextareaId、イベント、および各テキストエリアの制限を受け入れる関数です (文字制限が異なる 3 つのテキストエリアがあります)。event.preventDefault();コードで到達していますが、ユーザーはさらに文字を追加できます

function charCountTextarea(textAreaId,event,limit)
{
  var code = (event.keyCode ? event.keyCode : event.which);
  var Length = $("#"+textAreaId).val().length;
  var t = $("#"+textAreaId)[0];
  var AmountLeft = limit - Length;
  var lineIndex = t.value.substr(0, t.selectionStart).split("\n").length-1;
  var t = $("#"+textAreaId).val().split("\n");
  var lineIndex = (t.length)-1

  var controlKeys = [8, 46, 37, 38,39,40];
  var isControlKey = controlKeys.join(",").match(new RegExp(event.which));

  if(lineIndex>4 && t[lineIndex].length>15) {
    if(isControlKey) {
      return;
    }
    else {
      console.log("prevent");
      event.preventDefault();
    }
  }

  if(AmountLeft<0) {
    if(isControlKey) {
      return;
    }
    else {
      console.log("preve 2");
      event.preventDefault();
    }
  }
}
4

2 に答える 2

0

JavaScript を使用したくない場合は、'maxlength' 属性で制限できます。

<textarea name="hard" maxlength='45'></textarea>
于 2012-09-24T10:54:37.267 に答える
0

これを簡単に行うことができます:

var characters=500 //max characters

$("#MyTextArea").keyup(function(){
    if($(this).val().length > characters){
        $(this).val($(this).val().substr(0, characters));
    }
});

またはあなたのコードで、代わりに

event.preventDefault()

使用する:

$(this).val($(this).val().substr(0, characters));
于 2012-09-24T10:46:25.483 に答える