防止更改事件

时间:2016-04-22 23:28:25

标签: javascript jquery

我有一个Drop Down Called Network。对于特定网络,我们可以输入合同数量。让我们说我们为网络输入3合同。如果用户错误地更改了下拉菜单,那么所有3个合同都将被删除。

所以我要做的是给出一个OK或取消的警告对话框。如果他们单击“确定”,则会选择“下拉列表”中的新网络并清除所有合同,如果他们单击“取消”,则不会有任何更改。

我正在尝试使用e.PreventDefault()并将其放在警告对话框之前。但是,即使在弹出警告对话框之前,Drop Down项也会更改。由于它是下拉变更事件,e.PreventDefault无效。

任何人都可以帮助我。

 function networkIdChangeEvent(event) {
   if (atLeastOneContract()) {
     event.preventDefault();
     showWarningDialog(closeDialogMsg, okFunction, cancelFunction)
   }
 }

2 个答案:

答案 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>

我希望这个想法有用。