在 Chrome 和 Safari 中,有一个 <textarea>
与 white-space:nowrap
applied 导致输入末尾的各种空格字符转换为不间断空格(ASCII 160,十六进制 \xA0
)。
问题演示:http://jsfiddle.net/ND2LS/2/
<textarea rows="2" cols="40">foo</textarea>
<label>ASCII: <output></output></label>
<script type="text/javascript">
var t = document.querySelector('textarea'),
o = document.querySelector('output');
(t.onchange = t.oninput = function(){
var s = t.value;
for (var cc=[],i=s.length;i--;) cc[i]=s.charCodeAt(i);
o.value = cc.join(", ");
})();
</script>
在末尾键入空格将在每次按下时显示以下输出:
ASCII: 102, 111, 111, 160
ASCII: 102, 111, 111, 32, 160
ASCII: 102, 111, 111, 32, 160, 160
ASCII: 102, 111, 111, 32, 160, 32, 160
如何防止这种破坏用户输入的行为,同时仍然防止换行?
在 Safari v7.0.1 OS X 和 Chrome v33.0.1750.117 OS X 上体验过。Firefox 没有遇到这个问题。
最佳答案
textarea 的所谓 DOM0 wrap="off"
属性避免了这个问题,并且仍然防止换行。
固定演示:http://jsfiddle.net/ND2LS/3/
<textarea rows="2" cols="40" wrap="off">foo</textarea>
关于html - 防止在 nowrap textarea 中将空格转换为不间断空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21962191/