0

私はinputTextAreaを使用しています。実際には、最大長を制限したいと思います。私は次のような関数を使用しています

<script type="text/javascript">
    function limitTextArea(element, limit) {
        if (element.value.length > limit) {
            element.value = element.value.substring(0, limit);
        }
    }
</script>

<textarea id="description" name="description" 
          onkeyup="limitTextArea(this, 1000);" 
          onkeydown="limitTextArea(this, 1000)">
</textarea>

しかし、テキストエリアに長いテキストを書いたとします。テキストエリアにスクロールバーが表示されます。しかし、最大制限に達してから文字を書き込もうとすると、テキストエリアのスクロールバーが上に移動します。

ユーザーが最大制限に達すると、スクロールバーとカーソルがその位置に留まることを望みます。

最大制限後に何かを書き込もうとすると、テキストエリアのスクロールバーが上に移動するように動作するのはなぜですか?

ありがとう

4

3 に答える 3

0

参照:JavaScriptを使用してHTMLのtextAreaにmaxlengthを課す方法

window.onload = function() { 
  var txts = document.getElementsByTagName('TEXTAREA') 

  for(var i = 0, l = txts.length; i < l; i++) {
    if(/^[0-9]+$/.test(txts[i].getAttribute("maxlength"))) { 
      var func = function() { 
        var len = parseInt(this.getAttribute("maxlength"), 10); 

        if(this.value.length > len) { 
          alert('Maximum length exceeded: ' + len); 
          this.value = this.value.substr(0, len); 
          return false; 
        } 
      }

      txts[i].onkeyup = func;
      txts[i].onblur = func;
    } 
  } 
}
于 2012-05-02T10:31:47.020 に答える
0

少なくともこのコードは、テキストエリアが上にスクロールするのを防ぎます

jQuery(document).ready(function($) {
    $('textarea.max').keyup(function() {
        var $textarea = $(this);
        var max = 400;
        if ($textarea.val().length > max) {
            var top = $textarea.scrollTop();
            $textarea.val($textarea.val().substr(0, max));
            $textarea.scrollTop(top);

        }
    });

}); //end if ready(fn)

これが私がこのようにそれを使うことを思いついた参考文献です

値が変更されたときにtextareaが上にスクロールしないようにするにはどうすればよいですか?

より良い解決策:

jQuery(document).ready(function($) {
    var max = 400;
    $('textarea.max').keypress(function(event) {
        if (event.which < 0x20) {
            // e.which < 0x20, then it's not a printable character
            // e.which === 0 - Not a character
            return;     // Do nothing
        }

        if (this.value.length == max) {
            event.preventDefault();
        } else if (this.value.length > max) {
            // Maximum exceeded
            this.value = this.value.substring(0, max);
        }
    }); //end of keypress(fn)
}); //end if ready(fn)

ありがとう

于 2012-05-02T12:41:13.050 に答える
0

http://viralpatel.net/blogs/2008/12/set-maxlength-of-textarea-input-using-jquery-javascript.html

これを使用して、ユーザーが必要以上にテキストエリアに書き込めないようにすることもできます。

于 2012-05-02T10:40:51.557 に答える