2

divのHTMLを取得する変数があります。HTMLをデータベースに保存できるように、その変数を非表示のフォームフィールドで使用したいと思います。

HTMLまたはvarを文字列に変換するのに問題があります。現在、varを入力にそのまま追加すると、コードが中断されます。

私は.wrap('<pre />');いくつかの異なる方法で使用しようとしましたが、それは役に立たず、私はそれが正しいとは思いません。

誰かが私を正しい方向に向けることができますか?ありがとう!

var code = $('#container').html();

code = code.wrap('<pre />')

document.write('<input type="hidden" name="html" value="' + code + '">');
4

2 に答える 2

5

(HTMLであるため)直接エスケープする必要があるため、直接ではなくヘルパーメソッドを使用するdocument.writeことをお勧めします(コードに引用符が含まれていないことを確認してください)。簡単に言えば、次のようなものを使用してください。

$('<input>',{
  'type':'hidden',
  'name':'html'
}) // create element
  .val(code) // use helper to insert HTML (auto-excapes)
  .appendTo('body'); // insert it where ever you need it

詳細な説明:たとえば、code次のように言います。

<div class="foo">bar</div>

ドキュメント書き込みを使用することにより(そしてそれをエスケープしないことにより)、あなたは次のように書いています:

<input type="hidden" name="html" value="<div class="foo">bar</div>">

class="foo"およびその引用符)は、元の非表示要素のvalue=""属性に干渉します。を使用.val()すると、値が要素に安全に挿入されることが保証されるため、これを回避できます。

于 2013-01-02T01:45:27.997 に答える
0

jQueryを使用すると、これがおそらく最良の方法です...

jQuery(document).ready(
    function (){ 
        var code = jQuery.trim(jQuery('#container').html());
        jQuery("form").append('<input type="hidden" name="html" value="' + code + '">');
});
于 2013-01-02T02:30:48.620 に答える