我試圖讓用戶嘗試輸入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