我知道这个问题已被问到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");
}
});
答案 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");
}
});