很长一段时间以来,我一直在努力展示确认框。问题是我有一个下拉列表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都会加载。 如果有更好的解决方案,请帮忙。 谢谢,NC
更新:
它的.change()而不是.onchange()函数
答案 0 :(得分:1)
实际jConfirm
你有4个参数给出chck DEMO
jConfirm('Can you confirm this?', 'Confirmation Dialog', function(r) {
jAlert('Confirmed: ' + r, 'Confirmation Results');
});
好的,所以这样尝试
$(document).click(function(e) {
var target = e.target;
if (!$(target).is('#formlabel') && !$(target).parents().is('#roledef')) {
ifChangeSave();
}
});
试试这种方式
$('#roledef').on('click',function(e) {
// Do your work
});
$('#Module').change(function(event) {
event.stopPropagation();
// Dow your work
});
答案 1 :(得分:1)
试试这个:
$(function () {
var ModuleSave;
$("#Module").change(function () {
ModuleSave = $(this).val();
$("#Module").change(ifChangeSave);
}
function ifChangeSave() {
//UpdateRoles();
$("#divbackgroundLogoff").show();
jConfirm('Yes', 'No', '', 'Are you sure you want to Save the changes?', function (ans) {
if (!ans) {
$("#Module").val(ModuleSave);
return false;
} else {
UpdateRoles();
}
});
}
});
当页面加载时,初始更改处理程序只启用后面的更改处理程序,如果第二次更改,则会要求确认。