jQueryを使用してテキストエリアから先頭/末尾の空白を削除しますか?

StackOverflow https://stackoverflow.com/questions/3721999

質問

次のコードは、データベースからテキストエリアに配置されたテキストの例です。

<textarea id="inputPane" cols="80" rows="40" class="pane">
<p>
    some text here...
</p>
  <p>
    more text here...
</p>
</textarea>

jQueryの.trimを使用して、先頭と末尾の空白をすべて削除し、テキストエリアを以下のように表示させる実際のjqueryコードは何ですか?

<textarea id="inputPane" cols="80" rows="40" class="pane">
    <p>some text here...</p>
    <p>more text here...</p>
</textarea>

私はこれに何時間も取り組みましたが、.trimとのさまざまな組み合わせを試みましたが成功しませんでした

$('#inputPane')jQuery.trim(string);
役に立ちましたか?

解決

次のようなことを試すことができます。

jQuery(function(​$) {
    var pane = $('#inputPane');
    pane.val($.trim(pane.val()).replace(/\s*[\r\n]+\s*/g, '\n')
                               .replace(/(<[^\/][^>]*>)\s*/g, '$1')
                               .replace(/\s*(<\/[^>]+>)/g, '$1'));
});​

結果は次のようになります。

<p>some text here...</p>
<p>more text here...</p>

これは完璧ではないかもしれませんが、テキストエリアの HTML 値から要素を作成するよりもはるかに高速かつ効率的であることが証明されるはずです。

他のヒント

これを試して:

var $input = $('#inputPane');

var $container = $('<div>').html( $input.val() );

$('*', $container).text( function(i,txt) {
    return $.trim( txt );
});

$input.val( $container.html() );

それはのコンテンツを変えます textarea 要素に入り、それらを通り抜けてコンテンツをトリミングし、結果のHTMLをに挿入します textarea.


編集: 使用するように変更されました .val() それ以外の .text() @Bobinceが指摘したように

jQuery.trim() 文字列全体からリーディングとトレーリングの空白を削除します - この場合、最初の前に <p> そして最後の後 </p>. 。あなたは、より複雑なものが欲しいです。つまり、特定のタグの間で空白を削除することです。これは必ずしも簡単ではありませんが、たとえば、正規表現で(おそらく!)達成できます。

// assuming val is the textarea contents:
val = val.replace(/>\s*</, '><').replace(/\s+$/, '');

免責事項: これはすぐにまとめられ、すべてのケースをカバーするわけではありません。

値を取得し、値をトリミングし、値を設定します。

var value = $('#inputPane').val();
value = $.trim(value);
$('#inputPane').val(value);

または1行で:

$('#inputPane').val($.trim($('#inputPane').val()));

これが私がそれをする方法です(デモ):

$('.pane').val(function(i,v){
    return v.replace(/\s+/g,' ').replace(/>(\s)</g,'>\n<');
});

Textareaから先頭/後続の白人をトリミングするためにjQueryは必要ありません。 1行でコーディングする必要があります

前:

<textarea id="inputPane" cols="80" rows="40" class="pane">
    <p>some text here...</p>
    <p>more text here...</p>
</textarea>

後:

<textarea id="inputPane" cols="80" rows="40" class="pane"><p>some text here...</p></textarea>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top