簡體   English   中英

防止更改時發生默認事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM