user1463110
user1463110

Reputation: 175

override existing onkeydown embedded in html element

In html element onkeydown function is called.:

"<"input title="Enter Value" onkeydown="return RadWindowprompt_detectenter('{0}', event, this);" type="text" class="rwDialogInput" value="{2}" "/>"

But I need to override it with my document.onkeydown function

    document.addEventListener('keydown', captureEnter, true);

    function captureEnter(evt) {

        evt = evt || window.event;
        if (evt) {
            ele_type = evt.srcElement.getAttribute("id");
            if (!(ele_type == $("[id$='AddNewLink']") || ele_type == $("[id$='Add_New']") || ele_type == $("[id$='AddNewImage']"))) {
                ele_type = null;
                return;
            }

        }

    };

How do I cause my function to run instead of executing the html embedded onkeydown?

Upvotes: 1

Views: 542

Answers (1)

Arun P Johny
Arun P Johny

Reputation: 388326

I think you can stop the propagation of the event, if you don't want the onkeydown handler to execute

document.addEventListener('keydown', captureEnter, true);

function captureEnter(evt) {
  snippet.log('captureEnter')
  evt.stopPropagation()
};

function RadWindowprompt_detectenter() {
  snippet.log('RadWindowprompt_detectenter')
}
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

<input title="Enter Value" onkeydown="return RadWindowprompt_detectenter('{0}', event, this);" type="text" class="rwDialogInput" value="{2}"/>


Another way could be is to remove the onkeydown handler like

document.addEventListener('keydown', captureEnter, true);

function captureEnter(evt) {
  snippet.log('captureEnter')
};


var els = document.querySelectorAll('input.rwDialogInput[onkeydown]');
for (var i = 0; i < els.length; i++) {
  els[i].removeAttribute('onkeydown');
}

function RadWindowprompt_detectenter() {
  snippet.log('RadWindowprompt_detectenter')
}
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

<input title="Enter Value" onkeydown="return RadWindowprompt_detectenter('{0}', event, this);" type="text" class="rwDialogInput" value="{2}" />

Upvotes: 1

Related Questions