防止在nowrap textarea中将空格转换为不间断的空格

时间:2014-02-22 23:42:43

标签: html css google-chrome safari

在Chrome和Safari中,如果<textarea>应用white-space:nowrap会导致输入末尾的各种空格字符转换为不间断空格(ASCII 160,Hex \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没有遇到此问题。

1 个答案:

答案 0 :(得分:2)

textarea的所谓DOM0 wrap="off"属性可以避免这个问题,并且仍然可以防止换行。

修正演示:http://jsfiddle.net/ND2LS/3/

<textarea rows="2" cols="40" wrap="off">foo</textarea>