2012-10-19 60 views
2

我想将"someting "设置为div内的html,但.html()似乎删除了尾部空格。jquery .html()删除尾部空格

它位于contenteditable div内,所以当用户开始键入时,“某事物”和他键入的内容之间缺少空格。

HTML

<div id="text" contenteditable="true"></div> 

JAVASCRIPT

$('div#text').html('something   '); 

这显示了DIV中 “something_”,但是当你开始输入它似乎旁边的文本的其余部分。

+1

显示您的代码 – nu6A

+0

尝试使用[innerHTML](https://developer.mozilla.org/en-US/docs/DOM/element.innerHTML)而不是 – Bogdan

+0

@spider基本上,'innerHTML'的作用与jQuery的'.html()'。 – VisioN

回答

5

为了设置在HTML可见的空间,它们应该在的&nbsp;形式,例如

​$("#text").html("something&nbsp;&nbsp;")​​​​; 

一种选择是使用自己的功能,使基本的空间改造:

function spaceToNbsp(str) { 
    return str.replace(/ /g, "&nbsp;"); 
} 

$("#text").html(spaceToNbsp("something "))​​​​; 

DEMO:http://jsfiddle.net/NAWY3/

+0

这很好,我只需要添加一个“如果最后一个字符是空格,然后用非破坏空间替换它”。 – Manu

+0

(我不能改变所有空格,否则会溢出到右边) – Manu

+1

@Manu没问题。正则表达式可以帮助:'替换(/ $ /,“ ”)。 – VisioN

1

尝试使用&nbsp;而不是空格:

$('#div_id').html("something&nbsp;"); 
0

如果你喜欢它使用css

HTML

<div contenteditable="true" id="test"></div> 

CSS

div#test:before{ 
    content: '>\0000a0\0000a0'; 
    /*or content: 'Something\0000a0\0000a0';*/ 
} 

DEMO