2009-06-18 11 views
-3

フォーム要素があるajax/jqueryでテーブル行を追加しようとしています。私がAJAXなしで設定するとすべてうまく動作しますが、なんとなく<form>タグ内のすべてが完全に失われてしまいます。フォームがAJAXレスポンスから削除されました

jqueryの.html()は実際にinnerHTMLと同じですか?その場合、私はそれを失っていると思われます。とにかく

、ここではいくつかのコードです:

var worow = document.getElementById('worow_' + row); 
var wotable = document.getElementById('tbl_workorders'); 

// add a new row to the table underneath our existing row. 
var newrow = wotable.insertRow(worow.rowIndex+1); 
var x = newrow.insertCell(0); 

// set up the row a little bit 
x.colSpan = 13; 
x.style.padding = '10px'; 
x.style.backgroundColor = '#ccc'; 
x.align = "center"; 

x.innerHTML = '<img src="/images/loading.gif" />'; 

// a little ajax cuz we're cool that way 
$.post("getwotrans.php", 
{ 
    workorder: row 
}, 
function(response) 
{ 

    // set the value of the row = response object from the AJAX 
    $(x).html(response); 
}); 

そしてgetwotrans.php中:(言い換え)

<table> 
<thead><tr><td>blahblah</td></tr></thead> 
<tbody><form><tr><td><input></td></tr></form></tbody> 
</table> 

は、だから何が起こることは、私は、行を追加するjavascript関数を実行しますで、行がうまく追加され、テーブルヘッダーが表示されますが、tbodyの中の 'フォーム'はそこにはありません。

+0

ここにあなたのための読書があります。 http://www.w3.org/TR/html401/struct/tables.html –

+0

ああ、テーブルは言い換えられ、私がやろうとしていることを簡単に説明しています。実際の構造は重要ではありません。鼻をすってくれてありがとう。 –

答えて

1

の子要素にすることはできません。隠しフォームとJavaScriptを使用して、非表示のフォーム要素にクリックされた行の値をコピーし、JavaScriptを介してフォームを送信しました。多分それは考えです。

+0

これは解決策であると私は考えていませんが、これは私が行った解決策です。 –

0

フォームをテーブルの外に置くとどうなりますか?

<form><table> 
<thead><tr><td>blahblah</td></tr></thead> 
<tbody><tr><td><input></td></tr></tbody> 
</table></form> 

これで問題が解決するかどうか不思議ですか?それはそれを修正するために何か等しく奇妙なことなしに起こることは奇妙です!

+0

私は確かにそれをテーブルの外に置くことができますが、それは本当に私が行っていた機能ではありません。ここでの目標はインライン行の編集なので、各行の周りに別のフォームを置くだけで簡単に行えます(非表示のフィールドや、編集する行を特定する他の方法とは異なります)。 –

1

フォームは、私はいくつかのsimliar問題を抱えていたのtbody

+0

私は技術的に正しいとは思っていません。しかし、FF、Chrome、IEで動作します。少し試してみます。あなたはjavascriptは私がtbodyの中にフォームを入れさせないと言っていますか? –

+0

jqueryには有効なdomが必要です。ブラウザ間で矛盾が生じないと考えられる場合は、w3cで検証する必要があります。テーブルをラップするのはなぜですか? – redsquare

+0

ブラウザ間で矛盾していません。それは、私がAjaxに入れようとするまで、私が試したすべてのブラウザで一貫して動作します。 AJAXの応答が検証されない場合、jqueryはそれを無視しますか? –

関連する問題