在我們所有的頁面上,頂部顯示一條重要信息。當頁面加載時,該消息看起來像淺灰色背景中的純紅色文本(與頁面的其餘部分相同)。如果用戶想更新它,他們可以點擊它並調用editMsg函數,這使得它看起來像一個普通的文本輸入,並且一個「保存」按鈕將出現在右邊。onMouseOut事件發生在錯誤的元素中?
我的任務是取消更新,如果用戶將鼠標移動到封閉div的外面,將所有內容都返回到原始外觀。我嘗試過Blur,但似乎無法讓它做任何事情!
它似乎很簡單,但如果我將鼠標移動到文本輸入外但仍在div中,它將調用cancelMsgChg函數。我嘗試了幾次不同版本的cancelBubble(IE)和stopPropagation(FF),但都沒有運氣。事實上,我不明白爲什麼我需要這些,如果他們在不同的元素。
我花了整整一個早上在這裏追逐我的尾巴,在這裏閱讀一些帖子,但在一小時內丟失更多!
的HTML是:
<div id="update_message" onMouseOut="cancelMsgChg('onMouseOut');" >
<br />
<input id="message" onclick="editMsg();"
type="text" value="My message"
style="background:#DDDDDD; color:#DD0000; font-weight:bold; border:0;" />
<button id="save_message" style="display:none;"
class="btn" onclick="return saveHeaderMsg('Save Header Message',
document.getElementById('message').value);">Save Message</button>
<br /><br />
</div>
UPDATE:
我刪除從div標籤的onmouseout事件和添加時被點擊在div外鼠標的事件監聽器:
if (document.addEventListener) {
document.addEventListener("click", cancelMsgChg('click'), false);
} else if (document.attachEvent) {
// IE
document.attachEvent("onclick", cancelMsgChg('onclick'), false);
}
function cancelMsgChg(e) {
console.log ("in cancelMsgChg");
// In Internet Explorer you should use the global variable `event`
e = e || event;
// In Internet Explorer you need `srcElement`
var target = e.target || e.srcElement;
var id = target.id;
console.log ("id = " + id);
if (id != "update_message") {
//reset everything
}
}
但我得到一個「目標是未定義的」錯誤。所以......'e'根本沒有定義?
_I'm負責取消更新,如果用戶將鼠標移動到封閉div的外面,將所有內容都返回到原來的外觀._這聽起來像是一個可用性的噩夢。爲什麼不選擇保存按鈕旁邊的取消按鈕? –
爲什麼不試試JQuery?我會刺傷它的。 –
我已經請求jQuery,但尚未獲得批准。我有一個取消按鈕全部編碼,它很好,但顯然不是他們想要的。我必須使用IE8。 – ThorInSuburbia