長い間、確認ボックスの表示に苦労してきました。問題は、ドロップダウン リスト div = "Module" があり、ドロップ ダウン リストで任意の値を選択すると、対応する値が別の div = "DivRoles" に表示されることです。ドロップダウンで他のモジュールをクリックして DivRoles で変更が行われた場合は、変更を保存する必要があるため、確認ボックスを表示して変更を保存する必要があります。
コード スニペットは次のとおりです。
<div id="roledef" >
<div class="formlabel">
<div align="right" class="label">Select Module:</div>
</div>
<!--- Here is my Module drop down whose id = "Module"---->
<div class="formlabel">
@Html.DropDownListFor(model => model.Module, (IEnumerable<SelectListItem>)ViewBag.lstm, "-----Select-----")
</div>
<div style="clear: both;"></div>
<br/>
<!------------I display the values here in id="DivRoles"------------->
<div id="DivRoles" align = "center" >
@Html.DropDownListFor(model => model.UserRole, new SelectList(ViewBag.lstroles, "RoleID", "RoleName", Model.UserRole), new { multiple = "multiple" })
</div>
<div align = "center" >
@Html.DropDownListFor(model => model.UserRole, new SelectList(ViewBag.lstroles, "RoleID", "RoleName", Model.UserRole), new { multiple = "multiple", @id = "rolesoriginal" })
</div>
<div style="clear: both;"></div>
<div class="formelement">
<script src="@Url.Content("~/Scripts/jquery.multi-select.js")" type="text/javascript"></script>
</div>
ドロップダウンで値をクリックするたびに、UpdateRoles() 関数を呼び出しています。したがって、最初にクリックしたときに確認ボックスは必要ありません。また、divをクリックした後も、変更が行われていなければ確認ボックスは必要ありません。DivRoles タグで変更が行われた場合にのみ、ユーザーが他の div をクリックした場合に保存する必要があります。
次のjqueryを試しています:
$('#Module').change(ifChangeSave);
function ifChangeSave() {
//UpdateRoles();
$("#divbackgroundLogoff").show();
jConfirm('Yes', 'No', '', 'Are you sure you want to Save the changes?', function (ans) {
if (!ans)
return false;
else {
UpdateRoles();
}
});
}
ここでの問題は、変更が発生するたびに UpdateRoles がロードされることです。これに対するより良い解決策があれば助けてください。ありがとう、N.C.
アップデート:
その .change() ではなく .onchange() 関数