如果它位于元素内,则避免使用createElement函数(contentEditable)
我正在使用此function,以便使用Safari和Chrome在contentEditable div的替换行中用
替换
: New Divs
$("#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; } } });
问题是,当我在
输入内容并按“返回”键时,我不想得到
,所以我可以继续列入清单…
如果我在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(); .. }