ユーザーの連絡先情報が表示されるページがあります。変更する必要がある場合は、現在のデータに設定されたフィールド値を持つフォームを含むモーダル ダイアログ ボックスを開く [編集] ボタンがあります。それはうまくいきます。
フォーム内には「国」フィールドがあり、変更されると、新しい国の州が選択された選択ボックスの html を取得するか、州を入力するためのテキスト入力を表示する ajax 呼び出しがトリガーされます。
以前のバージョン (異なるサイズ、jquery 1.7) で動作していました...そのコードは次のとおりです。
$('#edit-contact-link').click(function(){
$('#dialog-contact-form-edit').dialog("open");
return false;
});
$('#dialog-contact-form-edit').dialog({
autoOpen: false,
modal: true,
width: 450,
height: 600,
open: function () {
$("#Country").change(function() {
var country = $(this).val();
$.ajax({
type: "POST",
url: "includes/ajax/countrystate.php",
data: {
Country: country
},
dataType: "html",
success: function(data) {
//alert(data);
$('#state-dropdown').empty().html(data); // fill the state with the right data
}
}); // end .ajax
}); // country change function
},
buttons: {
Submit: function() {
$("form[name='contactform']").submit();
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog('close');
}
}
});
新しいサイトで同じコードを使用してみました (セレクターと ajax ファイル名を少し変更しました) が、まったく機能しませんでした。
編集ボタンをクリックしてダイアログを直接呼び出し、on() メソッドを使用して ajax 呼び出しをトリガーする別の関数を作成することで、最終的にすべてが機能するようになりました (#state-dropdown div に ajax データを入力することを除く)。 #国選択フィールドの変更。
部分的に成功したコード:
$(document).on("change", "[id='Country']", function() {
var country = $(this).val();
var state = "";
//alert("Country "+ country + " AND State " + state);
$.ajax({
type: "POST",
url: "includes/functions/form-func/ajax-countries-states.php",
data: {
Country: country,
State: ""
},
dataType: "html",
success: function(data) {
alert(data);
$('#state-dropdown').empty().html(data); // fill the state with the right data
}
}); // end .ajax
}); // country change function
$('.contact-edit').click(function() {
$('#dialog-contact-edit').dialog({
modal: true,
position: ["center", 100],
width: 460,
buttons: {
"Close": function() {
$(this).dialog("close"); },
"Submit": function() {
$(this).dialog("close"); }
}
});
});
唯一の問題は、ajax 呼び出しの最後の行です。
$('#state-dropdown').empty().html(data);
空にしてajaxで取得したデータで埋めるフォームにdivがあります。
div がページの本体 (ダイアログの外側) に配置されている場合は正常に動作しますが、ダイアログの内側にある場合は更新されません。
これには簡単な修正が必要なようですが、これを検索して変更するのに何時間も費やしました...すべて役に立ちませんでした。
ここの素晴らしい頭脳からの援助は大歓迎です。
マリー