Javascript确认,捕获用户选择
Javascript confirm, capturing the user selection
在网站中实现了一个第三方插件,提示用户在删除之前进行确认。
confirmDelete: function (event) {
var go_ahead = confirm("Are you sure you want to delete this draft? This action cannot be undone.");
if (go_ahead) {
return;
} else {
event.preventDefault();
}
}
在我自己的js文件中,我想知道用户是点击了"取消"还是"确定"。
我可以判断用户何时被提示进入确认窗口(通过他们点击删除按钮),但我无法判断用户是点击了取消还是确定。
我想把这些代码分开,因为插件会定期更新。
$('button[name="delete"]').on('click', function(event) {
console.log('delete btn clicked');
console.log(event);
});
我在控制台中浏览了事件的内容,但没有发现任何内容。
将调用confirm
的值返回给onClick
处理程序,例如
var SomeObject = {
confirmDelete: function () {
return confirm("Are you sure you want to delete this draft? This action cannot be undone.");
}
};
然后:
$('button[name="delete"]').on('click', function(event) {
var confirmed = SomeObject.confirmDelete();
if (!confirmed) {
event.preventDefault();
return;
}
// etc...
});
我从确认功能中删除了事件处理。这使它接近实际事件,并且看起来更规范的jQuery。它提高了可读性并简化了测试。
另一种选择
如果小部件为按钮分配了一个事件侦听器,则选定的答案将不起作用。这似乎很可能是基于所提供的代码。相反,它将显示两个确认对话框,这非常令人困惑。
作为一种变通方法,OP可能会覆盖窗口确认方法。替换方法可以拦截消息和结果。虽然我不主张覆盖本机方法,但这是一个实用的解决方案,我已经成功地将其用于遗留系统。
运行代码段以尝试
var confirm2 = window.confirm;
window.confirm = function(message) {
var result = confirm2(message);
debug.innerHTML += 'confirm: ' + message + ''nresult = ' + result + ''n';
return result;
}
// Simulate 3rd Party Widget
var widget = (function() {
var methods = {
confirmDelete: function(event) {
var go_ahead = confirm("Are you sure you want to delete this draft? This action cannot be undone.");
if (go_ahead) {
return;
} else {
event.preventDefault();
}
}
}
document.getElementsByName('delete')[0].addEventListener('click', methods.confirmDelete);
return methods;
})();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button name="delete">Delete</button>
<xmp id="debug"></xmp>
相关文章:
- d3基于用户选择动态更新节点
- 获取用户选择的不带时区的日期
- 如何使用javascript localStorage保存用户选择并在不同的html页面中显示
- jQuery根据用户选择启用/禁用asp.net控件
- 将用户选择添加到数组中
- 将用户选择的数据临时存储在我的阵列中
- 如果用户选择离开网页,如何删除记录
- 根据用户选择选择页面
- 如何根据用户选择动态更改多个复选框的编号
- 谷歌地图 - 用户选择不允许位置
- 根据用户选择获取 JSON 密钥
- 根据用户选择的输入编写 html 文本
- Hangman游戏将用户选择的字母与单词中的字母进行比较以进行猜测
- Javascript确认,捕获用户选择
- 获取用户选择的选项的值
- NodeJS+JS:根据当前用户选择生成动态链接
- 使用用户选择动态更新页面
- html5文件api,将用户选择的目录存储在sessionStorage中
- 如何根据用户选择顺序重新排序多选的值
- PHP根据用户选择的项目以模式加载数据