检测textarea上何时出现滚动条

时间:2014-08-13 05:33:01

标签: javascript jquery

我知道这个问题已被问到here。基本上解决方案有效,但他们使用旧版本的jquery,解决方案是使用已弃用的函数实现的。因此,根据此question的答案和问题,我尝试迁移到新版本。

所以基本上使用旧的jquery版本的解决方案就是这个。

$('textarea.paginate').live('keydown', function(event) {
    if (this.clientHeight < this.scrollHeight) {
        alert("Please Something);
    }
});

这是我迁移到on函数,但两种方式都不起作用。演示示例:http://jsbin.com/saxay/1/edit

我做错了什么?

$("textarea").on('keyup','.note-codable',function(event){
  if(event.keyCode == 13) { }
  if (this.clientHeight < this.scrollHeight) {
    alert("Please Something");
  }
});

$(document).on('keyup','.note-codable',function(event){
  if(event.keyCode == 13) { }
  if (this.clientHeight < this.scrollHeight) {
    alert("Please Something");
  }
});

2 个答案:

答案 0 :(得分:1)

<强>已更新

尝试这种方法: DEMO

$.fn.hasVerticalScrollBar = function() {
    if (this[0].clientHeight < this[0].scrollHeight) {
        return true
    } else {
        return false
    }
};

$(document).on('keydown','.note-codable',function(event){
    if(event.keyCode == 13) { }
    if ($(this).hasVerticalScrollBar()) {
        alert("Please Something");
    }
});

另外,如果您发现我已将keyup事件更改为keydown,这在我看来更好,因为当用户将手指放在按钮上时,代码就不会如果它出现在keyup事件上,则会被解雇。

答案 1 :(得分:1)

修正了你的问题

您必须在第一个方法中.on处使用live

$('textarea.paginate').on('keydown', function(event) {

    // scrollbars apreared
    if (this.clientHeight < this.scrollHeight) {

       alert("Please add a new card for having a better format. Remember this is a WYSIWYG");

    }

});

DEMO