ajax経由でロードされた部分ビュー要素を参照するjqueryイベントを初期化するための正しいアプローチを見つけようとしています。具体的には、bootstrap-datepicker.js をブートストラップ モーダル フォームで使用しようとしています。
背景: 日付ピッカーが機能するページが機能していました。今日のプロジェクトは、そのフォームをブートストラップ モーダルに変換することでした。私がしたことの多くは、 Bootstrap を使用した MVC 4 Edit モーダル フォームから来ました。
すべて正常に動作しています。現在、ajax を介して部分ビューを読み込んでいるため、datepicker は機能しません。私は問題を理解していますが、解決策がわかりません。アドバイスをいただければ幸いです。
呼び出し元のビューには
<div class="modal hide fade in" id="addclassroom">
<div id="classroom-container"></div>
<div>
<script type="text/javascript">
$(document).ready(function () {
$('#addclassbtn').click(function () {
var url = "/Quiz/AddClassroom?quizId=@ViewBag.quizid";
$.get(url, function (data) {
$('#classroom-container').html(data);
$('#addclassroom').modal('show');
});
});
});
</script>
コントローラ:
public ActionResult AddClassroom(int quizId)
{
var classroom = ...
return PartialView("_AddClassroom",classroom);
}
部分図:
@using (Ajax.BeginForm("AddClassroom", "Quiz", FormMethod.Post,
new AjaxOptions
{
//InsertionMode = InsertionMode.Replace,
HttpMethod = "POST",
UpdateTargetId = "addclassroom"
}))
{
@Html.ValidationSummary()
@Html.AntiForgeryToken()
<div class="modal-body">
<fieldset class="QuizDisplayFields">
*fields...etc*
@Html.TextBoxFor(model => model.StartDate, new {@class="datefield" })
@Html.ValidationMessageFor(model => model.StartDate)
*more fields...*
<input type="submit" class = "btn btn-primary" value="Save" />
</fieldset>
</div>
}
<link href="~/Content/datepicker.css" rel="stylesheet" />
<script src="~/Scripts/bootstrap-datepicker.js"></script>
<script>
$(document).ready(function () {
$("#StartDate").datepicker();
});
</script>
<script>
$(function ($) {
$("#StartDate").on("click").datepicker();
});
</script>