【发布时间】:2012-03-26 06:48:14
【问题描述】:
这似乎很奇怪,但它确实发生了。 我有这段代码在 IE8 和 FF 中工作,但我很震惊它在谷歌浏览器中没有真正工作
/*btnPost*/
$("input#btnPost").click(function(){
//check if the textbox contains anything...
var txtPostdata = $.trim($("div#txtPost").html());
if(txtPostdata.length <= 0){
d = createDialog("confirmation","are you sure to post a blank post?",{"modal":true});
d.dialog("open");
}
});
在那里不起作用的是chrome无法知道 txtPostdata 变量的长度。 txtPostdata 保存在 CONTENTEDITABLE DIV 中抓取的 html。 我试图在 if 语句中取出 TODO,它工作正常。我也试过这样做
/*btnPost*/
$("input#btnPost").click(function(){
//check if the textbox contains anything...
var txtPostdata = $.trim($("div#txtPost").html());
if(txtPostdata == ""){
d = createDialog("confirmation","are you sure to post a blank post?",{"modal":true});
d.dialog("open");
}
});
但仍然无法正常工作...有什么办法可以在 chrome 中解决这个问题?我的 chrome 版本是 17.0。
请试一试 here
【问题讨论】:
-
在 Safari 和 Opera 中也测试过...不工作
-
试试 .innerHTML 或 .innerText。要查看一般可用的内容,请右键单击您感兴趣的页面部分,然后选择“检查元素”。应该会出现开发人员工具面板,右侧有一堆框。打开“属性”并选择第一个“HTML [标签]元素”。它将向您展示您突出显示的 DOM 对象的可访问属性中的内容。
-
这一定是您的可编辑 div 有问题,
$.trim($("div#txtPost").html()).length的工作方式与它应该的一样:jsfiddle.net/kt4aw -
问题是:你如何尝试清空 div?我尝试使用 DEL 和 Backspace,但我总是在 div 中至少有一个
<br>。只有当我打电话给$('#txtPost').html("")时它是空的,if(txtPostdata.length <= 0)在 Chrome 中工作得很好jsbin.com/asihom/2 -
我认为 jquery 的 .html() 已经使用了浏览器的 .innerHTML,正如 jquery 文档在这里 api.jquery.com/html 所说的那样,我不知道 .innerText ...你能进一步解释一下吗?谢谢你的回答
标签: javascript jquery google-chrome safari opera