在浏览器返回事件上调用更改事件

时间:2019-02-15 03:59:40

标签: jquery asp.net-mvc

在.cshtml页面中,

<section>
    <label class="select">
        @if (itm.OutOfStock)
        {
            <select class="form-control" id="itm_SelectedQty" name="itm.SelectedQty" disabled="disabled">
                <option value=""></option>
            </select>
        }
        else
        {
            @Html.DropDownListFor(m => itm.SelectedQty, itm.QtyChoices, "", new { @class = "form-control" })
        }
        @Html.HiddenFor(m => itm.MenuItemId, new { @class = "itm_MenuItemId" })
        @Html.HiddenFor(m => itm.ItemAmount, new { @class = "itm_ItemAmount" })
        <i></i>
    </label>
</section>

并在更改时调用以下jQuery代码:

 $('.form-control').change(function () {

    var selectedQty = this.value;

 }); 

当有人单击浏览器的后退按钮时,如何在更改功能上使用相同的名称?

1 个答案:

答案 0 :(得分:0)

您真的无法从请求中得知单击了后退按钮...

一种解决方案是使用window.history

另一种选择是向您的页面添加一个isDirty变量。此变量将包含在您的请求中,因此您可以使用它来检测页面是否脏了(即,单击了后退按钮):

在表单中添加一个隐藏变量:

/* I am using bootstrap, d-none would hide the input */
<input type="text" value="0" id="isDirty" class="d-none" />

然后在您的JavaScript代码(我正在使用jQuery)中,将isDirty的值设置为1

$(document).ready(function ($) {
    var isDirty = $('#isDirty');

    if (isDirty.length) { //<-- is dirty is defined

        // if user click the back button, isDirty is 1, call your function here
        if (isDirty.val() === "1") {
            // call whatever function you want to run on back button click
        }
        else {
            isDirty.val("1");  // <-- set isDirty to 1
        }
    }
});