我使用这个函数来替换<DIV>New Divs</DIV>
with <BR>
使用 Safari 和 Chrome 在 contentEditable div 上的断行中:
$("#form_description").live("keypress", function(e){
if (e.which == 13) {
if (window.getSelection) {
var selection = window.getSelection(),
range = selection.getRangeAt(0),
br = document.createElement("br");
range.deleteContents();
range.insertNode(br);
range.setStartAfter(br);
range.setEndAfter(br);
range.collapse(false);
selection.removeAllRanges();
selection.addRange(range);
return false;
}
}
});
问题是当我在里面输入时<UL><LI>Something</LI></UL>
我按“返回”键,我不想得到<BR>
,所以我可以继续这个列表......
如果我在一个LI
元素?
编辑我的答案:
好的,我已经成功做到了,但是如果您对代码有任何评论,欢迎您:
$("#form_description").live("keypress", function(e){
if (e.which == 13) {
node = document.getSelection().anchorNode;
nodeName = node.parentNode.nodeName.toLowerCase();
if ((nodeName != "li") && (nodeName != "blockquote")) {
... etc }
首先,使用keyup
作为事件名称,keypress 仅适用于 Firefox。
其次,e.这并不总是可用的。主要使用 e.keyCode,然后回退到 e.which:
var code = e.keyCode || e.which;
if (code == 13) {
// your code here..
}
第三,如果您需要取消按键中触发的默认事件,您可能需要在事件处理程序例程中添加一个 PreventDefault() 。确保它是第一行。
function(e){
e.preventDefault();
..
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)