フォームをロードしました。フォームには、変更時に ajax クエリを呼び出して第 2 レベルの選択領域を読み込んで表示する選択領域があります。
$('.subjectareaid').change (function ()
{
var selected = $(this);
var ssindex = selected.closest("tr").index()+1;
var putid = '#subsub'+ssindex;
var pdata = 'subjectareaid='+selected.val();
$.ajax({
type : "POST",
cache : false,
url : "a_subsubject.php",
data : pdata,
success: function(data) {
$(putid).html(data);
$(putid).removeClass('hideme');
}
});
});
a_subsubject.php ファイルは、返されるオプションのリストを作成します
<option value=".$row['subsubjectid']."> ".$row['subsubjectname']
変更される HTML はテーブルであり、テーブルには行があります。行は次のようになります。
$outline .= "<tr><td>".$oline."Question ".$k."</td><td valign=bottom><select name=dif[".$j."]>".$difsel."</select></td><td valign=bottom><select class=subjectareaid name=sub[".$j."]>".$subsel."</select></td><td valign=bottom><select class=hideme id=subsub".$j." value=subsub[".$j."]><option value=0></select></td></tr>";
ここで、$oline は空白またはセクション名、$k は質問番号、$j はインデックス (1-54)、$difsel は select ステートメントのオプション、$subsel は select ステートメントのオプションで、3 番目の選択が設定されます単一のオプションに、 hideme クラスで非表示にします。さらに、a_subsubject.php ajax 呼び出しによって返されるオプションで HTML を再充填できるようにする ID があります。
このテーブルはすべてフォームにラップされています
<form id=deform1>
フォームが送信されると、次の jquery が実行されます。
var formser = $('#deform1').serialize();
var crud = "&crud=scd";
var scorecardid = '&scorecardid='+ escape($('input[name=id]').val());
var pdata = formser+'&action=cru'+crud+scorecardid;
これは、データベースを更新するために CRUD プログラムに渡されるデータである pdata を使用して ajax ルーチンに送信されます。
質問 1、21、および 39 の 3 つの選択値すべてで選択を行った結果 (アラートから表示される) は次のとおりです。投稿文字列の後半}
id=1&dif%5B1%5D=0&sub%5B1%5D=2&dif%5B2%5D=0&sub%5B2%5D=0&dif%5B3%5D=0&sub%5B3%5D=0&dif%5B4%5D=0&sub%5B4%5D= 0&dif%5B5%5D=0&sub%5B5%5D=0&dif%5B6%5D=0&sub%5B6%5D=0&dif%5B7%5D=0&sub%5B7%5D=0&dif%5B8%5D=0&sub%5B8%5D=0&dif% 5B9%5D=0&sub%5B9%5D=0&dif%5B10%5D=0&sub%5B10%5D=0&dif%5B11%5D=0&sub%5B11%5D=0&dif%5B12%5D=0&sub%5B12%5D=0&dif%5B13% 5D=0&sub%5B13%5D=0&dif%5B14%5D=0&sub%5B14%5D=0&dif%5B15%5D=0&sub%5B15%5D=0&dif%5B16%5D=0&sub%5B16%5D=0&dif%5B17%5D= 0&sub%5B17%5D=0&dif%5B18%5D=0&sub%5B18%5D=0&dif%5B19%5D=0&sub%5B19%5D=0&dif%5B20%5D=0&sub%5B20%5D=0&dif%5B21%5D=3&sub% 5B21%5D=4&dif%5B22%5D=0&sub%5B22%5D=0&dif%5B23%5D=0&sub%5B23%5D=0&dif%5B24%5D=0&sub%5B24%5D=0&dif%5B25%5D=0&sub%5B25%5D=0&dif%5B26%5D=0&sub%5B26%5D=0&dif%5B27%5D=0&sub%5B27%5D=0&dif%5B28%5D=0&sub%5B28%5D=0&dif% 5B29%5D=0&sub%5B29%5D=0&dif%5B30%5D=0&sub%5B30%5D=0&dif%5B31%5D=0&sub%5B31%5D=0&dif%5B32%5D=0&sub%5B32%5D=0&dif%5B33% 5D=0&sub%5B33%5D=0&dif%5B34%5D=0&sub%5B34%5D=0&dif%5B35%5D=0&sub%5B35%5D=0&dif%5B36%5D=0&sub%5B36%5D=0&dif%5B37%5D= 0&sub%5B37%5D=0&dif%5B38%5D=0&sub%5B38%5D=0&dif%5B39%5D=2&sub%5B39%5D=3&dif%5B40%5D=0&sub%5B40%5D=0&dif%5B41%5D=0&sub% 5B41%5D=0&dif%5B42%5D=0&sub%5B42%5D=0&dif%5B43%5D=0&sub%5B43%5D=0&dif%5B44%5D=0&sub%5B44%5D=0&dif%5B45%5D=0&sub%5B45% 5D=0&dif%5B46%5D=0&sub%5B46%5D=0&dif%5B47%5D=0&sub%5B47%5D=0&dif%5B48%5D=0&sub%5B48%5D=0&dif%5B49%5D=0&sub%5B49%5D=0&dif%5B50%5D=0&sub%5B50%5D=0&dif%5B51%5D=0&sub%5B51%5D=0&dif%5B52%5D=0&sub% 5B52%5D=0&dif%5B53%5D=0&sub%5B53%5D=0&dif%5B54%5D=0&sub%5B54%5D=0&action=cru&crud=scd&scorecardid=1
dif%5B1%5D=0&sub%5B1%5D=2&dif%5B2%5D=0&sub%5B2%5D=0 を見るとわかるように、これは sub[1] が 2 に設定されていることを示しています。選択オプションのセットが表示されます。選択オプション (2 番目の項目) が作成されましたが、フォーム データのシリアル化によって subsub[1] がキャプチャされていません。[これはレコード 21 とレコード 39 でも行われました]。
シリアライズして3番目のjquery追加選択値を取得する前に、フォームを「更新」する方法がありませんか?