在onkeyup事件中未检测到Textarea更改?

时间:2016-05-02 10:04:07

标签: javascript jquery html

加载页面时,需要在keyup事件中检测到Textarea更改。 Textarea调整大小正常工作,但加载页面时未检测到textarea onkeyup事件。我尝试了以下代码。

<script>
    jQuery.each(jQuery('textarea[data-autoresize]'), function () {
        var offset = this.offsetHeight - this.clientHeight;
        var resizeTextarea = function (el) {
            jQuery(el).css('height', 'auto').css('height', el.scrollHeight + offset);
        };
        jQuery(this).on('keyup input', function () {
            resizeTextarea(this);
        });
        jQuery(this).trigger('keyup');
    });
</script>

2 个答案:

答案 0 :(得分:2)

尝试在window.onload

中运行您的代码
window.onload=function(){
    jQuery.each(jQuery('textarea[data-autoresize]'), function() {
      var offset = this.offsetHeight - this.clientHeight;
      var resizeTextarea = function(el) {
        jQuery(el).css('height', 'auto').css('height', el.scrollHeight + offset);
      };
      jQuery(this).on('keyup input', function() {
        resizeTextarea(this);
      });
      jQuery(this).trigger('keyup');
    });

    //trigger when modal showing
    $('.modal').on('shown.bs.modal', function () { 
        jQuery('textarea[data-autoresize]').trigger('keyup');
    })

}

小提琴here

答案 1 :(得分:1)

一旦文档加载完毕,你就应该执行jquery。

包裹它:

<script>
$(document).ready(function(){
      jQuery.each(jQuery('textarea[data-autoresize]'), function () {
        var offset = this.offsetHeight - this.clientHeight;
        var resizeTextarea = function (el) {
            jQuery(el).css('height', 'auto').css('height', el.scrollHeight + offset);
        };
        jQuery(this).on('keyup input', function () {
            resizeTextarea(this);
        });
        jQuery(this).trigger('keyup');
    });
});
</script>