1

フォームの送信に使用されるこのスクリプトと html があります。

<script type="text/javascript">
   function ApplyIndent() {
      var txtArea = document.getElementById('w2').value;
      var myRegExp = / /g;
      txtArea = txtArea.replace(myRegExp, "&#160;");
   }
</script>


<table cellpadding="0" cellspacing="0" border="0">
   <tr>
      <td><textarea id="w2" cols="50" rows="5"/></td>
   </tr>

   <tr>
      <td><input id="btnIndent" value="Indent" onclick="ApplyIndent()"/></td>
   </tr>
</table>

ここで達成しようとしているのは、空白を非改行スペースに置き換えることです。これは、テキスト領域でテキスト行をインデントしても、非改行スペースを使用しない限り、フォームを送信した後に自動的に正当化されるためです。テキスト領域のアラートをテストしたところ、目的の結果が得られましたが、テキスト領域自体に表示されるアラートの値が必要です。どうすればいいのですか?必要なスペースを確保するためだけに ascii 文字を入力するのは非効率的です。前もって感謝します!

<space> を使用してインデントする

フォーム送信後に <space> を使用した場合の結果

インデントに改行なしスペースを使用する

フォーム送信後に改行なしスペースを使用した場合の結果

4

1 に答える 1

1
var txtArea = document.getElementById('w2');
txtArea.value = txtArea.value.replace(/ /, "&#160;");

スペルアウトされた HTML エンティティの代わりに #160 で表される実際の文字が必要な場合は、次を使用することに注意してください。

"\xA0"

編集: 考え直して、CSS の何が問題なのwhite-space: pre-wrapですか?

于 2012-12-15T06:50:10.210 に答える