如何更改此代码,以便检测c ontenteditable div 中的行是否为空?
$('#area').on("keyup change", function() {
if( this.value.substr(0,this.selectionStart).match(/(?:^|\s+)$/)
&& this.value.substr(this.selectionStart).match(/^(?:\s+|$)/)) {
console.log("empty");
} else {
console.log("has stuff");
}
});
以textarea的方式工作。我试图用innerHTML替换VALUE - 唉!没有运气。
更新:我正在寻找的是以确定A SEPARATE LINE是否为空。例如 - 尝试添加几行,然后使用退格键删除任何行。删除一个符号 - 当行上没有符号时 - 脚本应该返回"空"。例如:
答案 0 :(得分:2)
使用您的代码(使用innerHTML添加mouseover
以获取鼠标悬停时的div状态):
$('#area').on("keyup change mouseover", function() {
if( this.innerHTML.substr(0,this.selectionStart).match(/(?:^|\s+)$/)
&& this.innerHTML.substr(this.selectionStart).match(/^(?:\s+|$)/)){
console.log("empty");
} else {
console.log("has stuff");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div name="" id="area" style="width:100px;height:100px;border:1px solid black;" contenteditable=true></div>
使用mouseover
并使用innerHTML获取数据。
$('#area').mouseover( function() {
if( this.innerHTML.substr(0,this.selectionStart).match(/(?:^|\s+)$/)
&& this.innerHTML.substr(this.selectionStart).match(/^(?:\s+|$)/)) {
console.log("empty");
} else {
console.log("has stuff");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div name="" id="area" style="width:100px;height:100px;border:1px solid black;" contenteditable=true></div>
答案 1 :(得分:2)
您需要将.value更改为.textContent。
$('#area').on("keyup change", function() {
if( this.textContent.substr(0,this.selectionStart).match(/(?:^|\s+)$/)
&& this.textContent.substr(this.selectionStart).match(/^(?:\s+|$)/)){
console.log("empty");
} else {
console.log("has stuff");
}
});
如果我理解正确的话,将textarea更改为div。
<div name="" id="area" cols="30" rows="10" contenteditable=true></div>