2011-09-22 71 views
0

我知道HTML中的富文本框是一個雷區,但我希望這種特殊情況不會太棘手。我想要一個用戶不能格式化的文本框,但是通過腳本我可以添加一些格式化的光(所以textarea不起作用)。編輯框:禁用用戶格式,但添加我自己

我的第一個想法是,我可以使用contentEditable,如果用戶沒有工具欄,他們不能做很多,但仍然有Ctrl + B,Ctrl + I等組合。所以我這樣做:

ctrlHandler = function (event) { 
    event.preventDefault(); 
}; 

this.keydown(function (event) { 
    if (event.ctrlKey) { 
     $(this).bind('keypress', ctrlHandler); 
    } 
}); 
this.keyup(function (event) { 
    if (event.ctrlKey) { 
     $(this).unbind('keypress', ctrlHandler); 
    } 
}); 

當按下Ctrl鍵時(​​)的事件處理程序綁定到按鍵,防止默認值,當它的發佈事件處理程序綁定。聰明,呃? (以後我會研究如何處理剪切/複製/粘貼等組合)。通過這種方式,事件處理程序可以正確綁定,但event.preventDefault()實際上並不會阻止默認設置!文字變得粗體/斜體/下劃線,就好像我什麼也沒做。格式變化似乎發生在事件發生之前。使用​​或keyup而不是keypress也不起作用。任何人都可以想到另一種(跨瀏覽器)的方法,或者如何使這個工作?

回答

0

啊哈!看來我誤解了event.ctrlKey的功能。按Ctrl + B不會觸發兩個keydown事件......它會觸發event.ctrlKey設置爲true的事件。所以if (event.ctrlKey) event.preventDefault()將做的伎倆。尚未在所有瀏覽器中測試過。

相關問題