我在HTML表格中有一個字段,用戶可以在其中編輯值。當用戶點擊該字段的其中一個單元格時,textarea出現在這個單元格上,用戶編輯他想要的任何內容,當他在該textarea外單擊時,它會回到正常文本。你知道,標準的東西。textarea在內部點擊時模糊
所有這一切都與的onfocus和正常工作的onblur事件,除了一兩件事:當我點擊內 textarea的(例:我想編輯的某一部分文字通過在兩個字母之間點擊),onblur事件仍然被調用,從而關閉textarea,這不是我想要的。
我很難理解事件被調用的原因。這種現象叫做事件傳播我聽說過嗎?我該如何解決或修復此問題?
這裏是我的相關情況代碼(減輕了一下):
的Javascript
// Create a function that updates a table cell once the textarea loses focus (do not be confused with "losing its Ford Focus")
function createBlurFunction(cell, textArea, functionName) {
return function() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var result = JSON.parse(xmlhttp.responseText)[0];
/* Do stuff with AJAX result */
}
}
// Empty cell
cell.innerHTML = "";
// Send AJAX request
xmlhttp.open("GET","Some AJAX parameters", true);
xmlhttp.send();
}
}
// textArea is already defined somewhere else
textArea.addEventListener('blur', createBlurFunction(cell, textArea, cell.title), false);
謝謝!
編輯1:
我用了一個類似的結構在其他地方在我的網頁(textarea的當您單擊之外的消失)和行爲是不同的:textarea的不走,當我點擊裏面的。
但是,我用複製/從上面的代碼粘貼,所以我可能會懷疑一個代碼錯誤或東西...
我不知道這是否是問題,但在最後一行,您是否嘗試將偵聽器放在'onblur'事件而不是'blur'上? –
addEventListener不需要事件名稱參數的「on」;) –
我的不好,我試圖找出發生了什麼問題。你有沒有嘗試在這些函數中加入一些'alert()'或'console.log()'來檢查它們的執行時間?您可以嘗試通過這種方式找到這些不需要的*事件觸發源。 –