Я использую эту функцию для замены <DIV>New Divs</DIV>
на <BR>
в строках разрывов в div содержимого contentEditable с использованием Safari и Chrome:
$("#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 }