日期:2014-05-16  浏览次数:20408 次

JS怎么判断输入框输入的内容全部为空(包括换行)?
我在页面上引用了HtmlEditor文本编辑器,代码如下:
<textarea name="content" id="content" style="display:none" rows="" cols="" ></textarea>
<iframe id="iframeEditor" name="iframeEditor" style="width: 98%; height: 100%;" src="${ctx}/plugins/editor/index.html?ID=content" frameborder="0" scrolling="no"></iframe>

我取content里面的内容JS如下:
var content = window.frames['iframeEditor'].window.frames['HtmlEditor'].document.getElementsByTagName('BODY')[0].innerHTML;

问题:
  要实现功能,在提交之前判断输入框内容是否全部为空(包括换行)

  1、当用户刚跳转到文本编辑器的页面,不在输入框里输入任何内容,提交时用以上js得到的content为空
  但当用户输入多个空格时(点击多次空格键)alert(content)得到的结果为&nbsp;&nbsp;(多个&nbsp;),
  请问怎么样判断用户输入的内容全部为空格(包括换行)?
  2、当用户跳转到编辑器页面,在输入框里输入内容,然后再清除,再输入多个空格时,alert(content)得到的结果为
  <p>&nbsp;&nbsp;</p>(&nbsp点击多少次空格键就有多少个),
  这时怎么判断用户输入内容全部为空(包括换行)?
上面问题补充,如果用户输入的内容中包含有空格,比如输入abcde,在d后面输入了空格,alert(content)结果为abcd&nbsp;e
同样输入后再清除再输入相同的字符串alert的结果为<p>abcd&nbsp;e</p>这种情况下,不要把中间的空格过滤。

以上用js怎么判断?
希望大家都来关注一下!谢谢



------解决方案--------------------
正则嘛
replace(/<p>[&nbsp;]*<\/p>/g,"")
编辑器里的换行貌似就是2个P标签吧。
------解决方案--------------------
也不一定就是<p>的事 如果他用编辑器弄了个<font></font>呢 肯定也算是空吧
所以/^(<[^><]+>|\s|&nbsp)+$/
如果匹配 则说明是空
------解决方案--------------------
去网上查询一些过滤HTML标签的正则表达式 然后你自己可以封装起来 以后就方便多了
------解决方案--------------------
var _FUN_TRIM=function(a){return a.replace(/^\s+|\s+$/g,"")};
------解决方案--------------------
要是用户弄了1个img标签进去呢,那样把html标签都去掉就不行了

因用户输入内容再删除,会自动加<p>,所以我觉得只要考虑加<p>的就可以了

if(/^(<p>|</p>|\s|&nbsp;)+$/i.test(content)){
alert("内容不能为空");
return false;
}