0

很长一段时间以来,我一直在努力显示确认框。问题是我有一个下拉列表 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 都会加载此问题。如果有更好的解决方案,请提供帮助。谢谢,数控

更新:

它的 .change() 而不是 .onchange() 函数

4

2 回答 2

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
});
于 2012-09-28T06:10:24.813 回答
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();
            }
        });
    }
});

加载页面时,初始更改处理程序仅启用稍后的更改处理程序,该更改处理程序要求确认是否第二次更改。

于 2012-09-28T06:29:45.287 回答