jQuery1.7.2とjQueryUI1.8.20を使用しています。私のページの1つに、フォームを含む簡単なダイアログがあります。
<div id="dialog-addArtToCompetition" title="Add Art to Competition">
<form id="addToCompetition" name="addToCompetition"
action="${competition_new_base}" method="post">
<fieldset>
<input type="hidden" name="artPieceId" id="artPieceIdHidden" value="${artPiece.id}" />
<label for="artCategoryId">Category: </label>
<select name="artCategoryId" id="artCategoryIdSelect"
multiple="false" style="width: 200px; height: 50px;">
</select> <br />
<label for="competitionPrice">Price: </label>
<select name="competitionPrice" id="competitionPriceSelect"
multiple="false" style="width: 200px; height: 50px;">
</select>
</fieldset>
</form>
</div>
次に、ダイアログを次のように登録します。
$('#dialog-addArtToCompetition').dialog({
autoOpen: false,
width: 400,
height: 500,
modal: true,
buttons: {
"Add": function() {
$('#addToCompetition').ajaxSubmit({
accept: 'application/json',
dataType: 'json',
//beforeSubmit: showRequest, // pre-submit callback
success: function(comp, statusText, xhr, $form) {
alert("Art added");
$(this).dialog( "close" );
},
error: function(xhr, ajaxOptions, thrownError) {
alert("Some error occured");
$(this).dialog( "close" );
},
resetForm: true
});
$(this).dialog( "close" );
},
"Cancel": function() {
$(this).dialog( "close" );
}
},
close: function() {}
});
});
しかし、ダイアログを開くと、2番目の要素が欠落しています。ソースを表示して生成されているHTMLを再確認しましたが、生のHTMLファイルには選択がありませんが、Chromeの開発ツールを使用して表示するとElementsタグから欠落しています。そして、はい、私は正しいDIVを見ています。これは、jQueryがダイアログを作成するときに、ダイアログを本文に移動することを知っているからです。
jQueryがフォーム要素を削除するのはなぜですか?