[英]How to listen for Angular 2 native page change event and prevent default?
[英]Prevent default on change event
我有一個下拉電話網絡。 對於特殊網絡,我們可以輸入合同數量。 假設我們輸入3個網絡合同。 如果用戶錯誤地更改了下拉菜單,則所有3個合約都將被清除。
所以我想做的是使用“確定”或“取消”給出警告對話框。 如果他們單擊“確定”,則從“下拉列表”中選擇新的網絡,並清除所有合同;如果它們單擊“取消”,則不會有任何更改。
我正在嘗試使用e.PreventDefault()並將其放在警告對話框之前。 但是,甚至在彈出警告對話框之前,下拉項也已更改。 並且由於它是下拉更改事件,因此e.PreventDefault不起作用。
誰能幫幫我嗎。
function networkIdChangeEvent(event) {
if (atLeastOneContract()) {
event.preventDefault();
showWarningDialog(closeDialogMsg, okFunction, cancelFunction)
}
}
你能代替嗎
返回假
如果是jQuery事件處理程序,則應該在eventListener上工作。 如果是非Jquery事件,則請注意:preventDefault()方法不會阻止事件通過DOM進一步傳播。 使用stopPropagation()方法來處理此問題。
試試這個方法:
<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>
我希望這個想法會有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.