jquery - 在浏览器返回事件上调用更改事件
问题描述
在 .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;
});
当有人点击浏览器的后退按钮时,我如何在更改功能上调用它?
解决方案
从请求中,您无法真正判断单击了后退按钮...
一种解决方案是使用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
}
}
});
推荐阅读
- javascript - api调用Angular 8后PatchForm不起作用
- sql - 将我的列转换为 postgresql 中的行而不创建任何扩展
- python - 使用 matplotlib 和 seaborn 生成和绘制高斯混合
- angular - Asp.Net核心角度验证和提交表单不起作用
- dynamics-crm - Dynamics 365 Developer Toolkit 错误:由于网络中断而无法加载实体
- php - 无法使用 php7 安装 phalcon ubuntu 19.10
- jquery - d3.js 树 - 选择叶节点列表返回树中的所有节点,而不仅仅是选定的节点项
- android - 是否可以在不生根设备的情况下以编程方式触摸屏幕上的事件?
- c++ - 具有对齐存储的动态内存分配
- java - java.lang.IllegalArgumentException:非法 base64 字符 -1