我有一个Drop Down Called Network。对于特定网络,我们可以输入合同数量。让我们说我们为网络输入3合同。如果用户错误地更改了下拉菜单,那么所有3个合同都将被删除。
所以我要做的是给出一个OK或取消的警告对话框。如果他们单击“确定”,则会选择“下拉列表”中的新网络并清除所有合同,如果他们单击“取消”,则不会有任何更改。
我正在尝试使用e.PreventDefault()并将其放在警告对话框之前。但是,即使在弹出警告对话框之前,Drop Down项也会更改。由于它是下拉变更事件,e.PreventDefault无效。
任何人都可以帮助我。
function networkIdChangeEvent(event) {
if (atLeastOneContract()) {
event.preventDefault();
showWarningDialog(closeDialogMsg, okFunction, cancelFunction)
}
}
答案 0 :(得分:0)
你可以尝试改为
返回false
如果jQuery事件处理程序应该在eventListener上工作。如果是非Jquery事件,那么注意:preventDefault()方法不会阻止事件通过DOM进一步传播。使用stopPropagation()方法来处理这个问题。
答案 1 :(得分:0)
尝试这种方法:
<script>
window.onload = function () {
(function () {
for (var i = 0, n = arguments.length; i < n; i++) {
var elem = document.getElementById(arguments[i]);
elem.prevValue = elem.value;
elem.onchange = function (e) {
console.log('prev ' + this.id + '; ' + this.prevValue);
var ok = confirm('Are you sure?');
if (ok)
this.prevValue = this.value;
else
this.value = this.prevValue;
console.log('new ' + this.id + '; ' + this.prevValue);
}
}
})('sel', 'sel1');
}
</script>
你的下拉:
<select id="sel">
<option value="-1">select</option>
<option value="1">one</option>
<option value="2">two</option>
</select>
<select id="sel1">
<option value="-1">select</option>
<option value="1">one</option>
<option value="2">two</option>
</select>
我希望这个想法有用。