我试图让用户尝试输入P.O.时触发焦点事件侦听器。放入地址栏中。我无法编辑简单按键解决方案的输入。我在代码中错过了什么,我没有得到警报?焦点事件监听器不会触发不可编辑的输入
<input type="text" size="25" maxlength="75" name="ShipAddress1" id="v65-onepage-shipaddr1" value="" style="" onkeydown="">
<script type="text/javascript">
document.addEventListener("focus", function killPObox(id) {
var idValue = document.getElementById('v65-onepage-shipaddr1').value;
if (id == 'v65-onepage-shipaddr1') {
function runVal() {
if (idValue.substr(0,4).toUpperCase() === "PO B" || idValue.substr(0,5) === "P.O. ") {
alert("USA Light cannot ship to P.O. Boxes. Please enter a street address.");
}
}
setInterval(runVal(),1);
}
}, true
);
</script>
'id'不是字符串,它是一个'Event'对象。您可以尝试'event.target.id' – Halcyon
为什么要将事件侦听器添加到文档而不是输入元素? – Barmar
要注意的另一件事是,你正在使用'setInterval'不正确。你应该像'setInterval(runVal,1)'那样传递回调(注意缺少括号)。现在你将'runVal()'的输出传递给它,这是什么都没有。该函数将运行一次,然后再也不会。 – Halcyon