私はNodeJsとExpressで作業しています。データベース(MongoDB)からブートストラップ4のリモートモーダルにデータを渡す必要があります。私はブートストラップがv4の "リモート"オプションを削除したことを知っていますが、別のファイルに別の内容を入れる必要があります。 今のところ、DBからデータを送信し、リモートコンテンツでモーダルを開きますが、このリモートコンテンツはDBからデータを受信していません。ブートストラップ4はリモートモーダルにデータを渡します
トリガーボタン:
<a id="btn1" data-remote="myContent.ejs" data-foo="<%=some.data1%>" data-fighter="<%=some.data2%>" data-toggle="modal" data-target="#Modal1">Click me!</a>
(同じファイル内)モーダル:
<div class="modal fade" id="Modal1" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4>My Modal</h4>
</div>
<div class="modal-body" id="modalR">
<!--REMOTE CONTENT GOES HERE-->
<script type="text/javascript" charset="utf-8"></script>
</div>
<div class="modal-footer">
<div class="form-group col-md-offset-9">
<button type="submit" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-primary" form="form1">Save</button>
</div>
</div>
</div>
</div>
リモートコンテンツ(myContent.ejs):
これは私のコードです<form role="form" method="post" action="/fooAction" id="form1">
<div class="form-group">
<label for="fooHere">foo</label>
<input type="text" class="form-control" id="fooHere" name="fooHere" value ="">
</div>
<div class="form-group" id="fighter">
<label for="fighterHere">Fighters</label>
<select class="form-control" id="fighterHere" name="fighterHere">
<option id="opFighters" value=""></option>
<option value="Fighter1">One fighter</option>
<option value="Fighter2">Another Fighter</option>
</select>
</div>
</form>
JSファイル:
//LOAD REMOTE-CONTENT (Bootstrap 4 removed the "remote" option)
$('body').on('click','[data-toggle="modal"]', function(){
jQuery($(this).data("target")+' .modal-body').load($(this).data("remote"));
});
//PASS DATA TO CONTENT
$(document).on("click", "#btn1", function() {
var foo = $(this).data('foo');
var fighter = $(this).data('fighter');
console.log (foo); //Works! Console shows the correct data
console.log (fighter); //Too!
$(".form-group #fooHere").val(foo); //Doesn't show anything
$(".form-group #opFighters").val(fighter); //Doesn't show anything
});
どこが間違っていますか? 誰でも助けることができますか? ありがとう!
あなたは '$(ドキュメント).ready()を使用して試してみました;' '$に(」。フォームグループ#fooHereは ")のval(FOO); 'と' $(" フォームグループ。 #opFighters ")。val(戦闘機);'? – webeno
私が試したのは初めてでしたが、今は完全に機能しています。問題はなぜ '$(document).ready();'が必要なのかわかりません。まあ、おかげで – cfibla
@webenoたくさん私は答えとしてこれを追加し、また、説明を提供し、それはそれを明確に願っています。 – webeno