Javascript 空contenteditable元素上的布尔值计算为true
我有一些contenteditable div,具有以下功能:Javascript 空contenteditable元素上的布尔值计算为true,javascript,contenteditable,Javascript,Contenteditable,我有一些contenteditable div,具有以下功能: $(".myDiv").on('blur', function() { if ($(this).text()) { // Do something } else { // i.e. $(this) is empty // Do something else } 如果myDiv输入了文本,然后删除了文本,那么这种方法可以很好地工作。
$(".myDiv").on('blur', function() {
if ($(this).text()) {
// Do something
} else { // i.e. $(this) is empty
// Do something else
}
如果myDiv输入了文本,然后删除了文本,那么这种方法可以很好地工作。但是,如果页面加载时myDiv为空,获得焦点,然后在没有输入任何文本的情况下再次丢失,则上述函数的计算结果为true
例如,如果我这样做:
$(".myDiv").on('blur', function() {
if ($(this).text()) {
console.log('===== text =====');
console.log($(this).text());
console.log(typeof($(this).text()));
} else {
console.log('===== empty =====');
console.log($(this).text());
console.log(typeof($(this).text()));
}
然后单击myDiv,输入一个值,然后单击away,然后清除myDiv,然后再次单击away,得到以下结果:
===== text =====
myText
string
===== empty =====
(en empty string)
string
但是,如果我在一个空的myDiv中单击,而该myDiv中还没有文本,则单击离开,而不输入任何内容:
===== text =====
string
为什么会这样
==编辑===
所以我做了一个测试,但它没有我上面描述的问题
==编辑==
我更新了文件以检查长度
==最终编辑==
感谢那些投入时间和思想的人。我最终做了这样的事情:
if ($.trim($(this).text())) {
// etc etc
删除所有不需要的空白,这是有效的。jQuery选择器将为您提供一个jQuery对象,它包装HTML元素,而不是实际的HTML元素本身。根据jQuery文档,长度将为您提供“当前匹配的元素数”。在本例中,选择器将为您提供一个元素(myDiv)。这就是为什么长度总是1 相反,您应该访问text属性上的长度,因为这将为您提供正确的长度
$('#2').text($(this).text().length);
查看此是否可以创建链接是否可以在$处创建演示。text()始终返回字符串。请改为检查。@Broxzier问题不在于它返回字符串,而在于空字符串的计算结果为true而不是false。@moarCoffee小提琴似乎工作正常