How can I check if a value is changed on blur event?

前端 未结 10 1213
时光说笑
时光说笑 2021-02-07 06:29

Basically I need to check if the value is changed in a textbox on the \'blur\' event so that if the value is not changed, I want to cancel the blur event.

If it possible

10条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2021-02-07 06:47

    You can't cancel the blur event, you need to refocus in a timer. You could either set up a variable onfocus or set a hasChanged variable on the change event. The blur event fires after the change event (unfortunately, for this situation) otherwise you could have just reset the timer in the onchange event.

    I'd take an approach similar to this:

    (function () {
        var hasChanged;
        var element = document.getElementById("myInputElement");
        element.onchange = function () { hasChanged = true; }
        element.onblur = function () {
            if (hasChanged) {
                alert("You need to change the value");
    
                // blur event can't actually be cancelled so refocus using a timer
                window.setTimeout(function () { element.focus(); }, 0);          
            }
            hasChanged = false;
        }
    })();
    

提交回复
热议问题