只有内联处理程序才有效

时间:2014-01-24 06:33:54

标签: javascript html html5 cordova javascript-events

在我的应用程序中,只有内联处理程序可以使用。

这是我的javascript函数的一部分

function onDeviceReady() {
        alert('ready');
        document.querySelector('#idCpf').onkeypress = alert('keypress');
        document.getElementById("idCpf").onclick=alert("click");
     }

这是我的html代码的一部分

 <input type="tel" autocomplete="on" id="idCpf" onblur="alert('onblur')" placeholder="Seu CPF" required>

在'onDeviceReady'功能上,只有第一个警报有效,并且'onkeypress'和'onclick'在没有按键,点击或模糊输入的情况下“onDeviceReady”时显示警告。但是我的代码仅在我使用内联处理程序时才有效,例如'input type .... onblur =“alert('onblur')”'。 我的问题是什么?

感谢。

1 个答案:

答案 0 :(得分:2)

document.querySelector('#idCpf').onkeypress = alert('keypress');

调用alert('keypress');并将alert('keypress');的返回值指定为事件处理程序。

alert('keypress');会立即执行,而不是在触发事件时执行。

要指定必须执行的事件处理程序,

document.querySelector('#idCpf').onkeypress = function () { alert('keypress') };
document.getElementById("idCpf").onclick= function () { alert("click") };