0

作業中のWebアプリに問題があります。フォームの入力フィールドはjQueryによって追加されます。私のフォームは、HTMLエディターでは次のようになります。

<form id="profile" method="post" action="Profile/UpdateProfile">
        <tr><td><b>Namn:</b></td><td><parameter name="Name" class="transform">@ViewBag.Name</parameter></td></tr>
        <tr><td><b>Address:</b></td><td><parameter name="Address" class="transform">@ViewBag.Address</parameter></td></tr>
        <tr><td><b>Postaddress:</b></td><td><parameter name="ZIP" class="transform">@ViewBag.ZIP</parameter></td></tr>
        <tr><td><b>Personnummer:</b></td><td><parameter name="Pnumber" class="transform">@ViewBag.Pnumber</parameter></td></tr>
    </form>

しかし、DOM-inspectorでは次のように表示されます。

<form id="profile" method="post" action="Profile/UpdateProfile"></form>
<tbody><tr><td><b>Namn:</b></td><td><parameter name="Name" class="transform">Anton Gildebrand</parameter></td></tr>
        <tr><td><b>Address:</b></td><td><parameter name="Address" class="transform"></parameter></td></tr>
        <tr><td><b>Postaddress:</b></td><td><parameter name="ZIP" class="transform">0</parameter></td></tr>
        <tr><td><b>Personnummer:</b></td><td><parameter name="Pnumber" class="transform"></parameter></td></tr>

</tbody>

入力がないのは奇妙に見えるかもしれませんが、ユーザーが編集ボタンを押すと、「パラメーター」タグが次のJavaScriptを使用してテキスト入力に変換されます。

$('#' + id + ' .transform').each(function (index) {
         var val = $(this).html();
         $(this).html('');
         var tag = $(this).parent().html();
         var newTag = tag.replace('<parameter', '<input type="text" value="' + val + '"');
         newTag = newTag.replace('</parameter', '</input');
         $(this).parent().html(newTag);
     });

ご覧のとおり、「パラメーター」タグはDOMインスペクターのフォームでラップされておらず、サーバーには何も投稿されていません(Fiddlerを使用してデバッグされています)。どうすれば解決できますか?

4

1 に答える 1

3

テーブル全体にフォームをラップします。

フォームをテーブル要素の内側に置くことはできませんが、テーブルセルの外側に置くことができます。ブラウザがエラー回復を実行しようとしているかどうかを確認する結果。通常、バリデーターを使用することをお勧めします(ただし、JSを使用して生成する場合は、生成する予定のマークアップでバリデーターを実行する必要があります)。

(また、レイアウトにはcssを使用し、太字の要素の代わりにラベル要素を使用します)。

于 2012-04-22T00:06:06.633 に答える