PHP によってデフォルト値が割り当てられた複数の入力ブロックを含むフォームがあり、ブロックの 1 つの HTML マークアップを PHP スクリプトに渡したいと考えています。マークアップを例示するために私のフォームの変更されたスニペットを次に示します。
<form action="/page/do_work/job_number" id="work_form">
<textarea style="display: none;" name="markup" id="markup"></textarea>
<div id="block_1">
<table>
<tr>
<td><input type="text" value="123" /></td>
<td><input type="text" value="123" /></td>
</tr>
</table>
</div>
<div id="block_2">
<table>
<tr>
<td><input type="text" value="abc" /></td>
<td><input type="text" value="abc" /></td>
</tr>
</table>
</div>
</form>
テーブルの HTML をテキストエリアにコピーできるように、jQuery を使用してフォームの送信をリッスンしています。
$('#work_form').submit(function(){
// Snatch the markup
var markup = $('#block_1', '#work_form').html();
// Place it into the textarea
$('#markup', '#work_form').html( markup );
// Move on
return true;
});
問題は、変更された値がテキストエリアにコピーされていないことです。たとえば、値を「abc」から「xyz」に変更しても、テキストエリアに渡されるマークアップは「abc」のままです。どんな助けでも大歓迎です。
編集:.html()
テキストエリアにマークアップを追加するか、その両方を使用.val()
しますが、入力の値の変更がテキストエリアに挿入されたマークアップに反映されない理由を知りたいです。さらに調査すると、入力フィールドの値を変更して Firebug で調査すると、デフォルト値が保持されていることがわかります。何らかの方法で DOM を更新する必要がありますか?
編集 2:変数markup
が設定されていますが、入力フィールドに加えた変更がテキストエリアに挿入されたマークアップに反映されていません。