遷移された子画面でリスト選択された値を、親画面のあるテキストボックスへ戻したい
親画面に動的で生成されるテーブルが存在しています(初期表示は10行)。初期表示の各行には行追加ボタンがあって、行を無限に増やすことができます。
また、各行のある列にはinputタグのテキストボックスを構成していますが、nameだけが割り当てられているだけで、どの行もclass・id双方が設定されていない状態です。
window.openで開く子画面は、上記テーブルの各行にイメージボタンも配置されるので、この押下をもって開くようにしています。【この隣の要素】=テキストボックスへ、子画面側リストボックスで選択されたvalを戻したいと考えています。インターネット上の記事を見よう見まねで、現況以下コーディングになっています。
(検証のための行を追加しています)
【親画面のJS】
// 品名コード検索画面(winOpenとセットで利用)
$(document).on("click", ".cdsrch", function(e) {
// **** 戻ってくるテキストボックス特定のため、IDに99を付与
$(this).next().attr("id","99");
console.log($(this).next().prop("tagName")+"⇒"+$(this).next().prop("id"));
// ****
winOpen("cdselect0.php", 600, 960);
return false;
});
【子画面のJS】
//生成された品名コードのリストボックスで更に指定を受けたら...
$("[name=car_model]").on("change", function(){
var selectval = $(".car_model option:selected").val();
// window.opener.document.getElementById("99").val(selectval);
alert (selectval);
alert (window.opener.document.getElementById("99").prop("tagName"));
close();
});
function winOpen(url, width, height) {
if (width > 800) {
width = 800;
}
if (height > 600) {
height = 600;
}
window.open(url, '_blank', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=' + width + ', height=' + height);
}
子画面側のJSがコけているのか、親画面に値が渡らないばかりか子画面のcloseも行われません。(案の定エラーになっている様子↓の図)
子画面側でID=99の要素を取得できない要因、解決策についてご支援を頂けませんでしょうか??
開発ツールというものを初めて使い始めていますが、親画面のコンソールを見た限り、子画面を開く際に一応呼びもとのタグに99のID付与は成功しているようです。
但し、子画面側で親画面のID=99のタグを見つけられない状況が起きているような気がします。