Не могу получить document.selection.createRange() при написании плагина
Написал плагин для jQuery, для вставки тегов в textarea..
Все работает, кроме одной функции в IE.. При выделении декста в textarea должы вставляться теги обтекая выделение. Но почемуто sel = document.selection.createRange(); не получает выделение.. Как быть? Привожу код: jQuery.fn.addtag = function(options){ var options = jQuery.extend({ id: '', codTag: '0' }, options); var edButtons = new Array(); var edOpenTags = new Array(); function edButton(id, tagStart, tagEnd) { this.id = id; this.tagStart = tagStart; this.tagEnd = tagEnd; }; edButtons[edButtons.length] = new edButton( 'ed_b', '<b>', '</b>' ); edButtons[edButtons.length] = new edButton( 'ed_i', '<i>', '</i>' ); edButtons[edButtons.length] = new edButton( 'ed_u', '<u>', '</u>' ); function edCheckOpenTags(codTag) { var tag = 0; for (i = 0; i < edOpenTags.length; i++) { if (edOpenTags[i] == codTag) { tag++; }; }; if (tag > 0) { return true; } else { return false; }; }; function edAddTag(codTag) { if (edButtons[codTag].tagEnd != '') { edOpenTags[edOpenTags.length] = codTag; }; }; function edRemoveTag(codTag) { for (i = 0; i < edOpenTags.length; i++) { if (edOpenTags[i] == codTag) { edOpenTags.splice(i, 1); }; }; }; function insertTag(id, codTag){ var element = document.getElementById(id); //if (document.selection) { if (jQuery.browser.msie) { element.focus(); var sel = document.selection.createRange(); alert(sel.text); if (sel.text.length > 0) { sel.text = edButtons[codTag].tagStart + sel.text + edButtons[codTag].tagEnd; } else { if (!edCheckOpenTags(codTag) || edButtons[codTag].tagEnd == '') { sel.text = edButtons[codTag].tagStart; edAddTag(codTag); } else { sel.text = edButtons[codTag].tagEnd; edRemoveTag(codTag); } }; element.focus(); } else if (element.selectionStart || element.selectionStart == '0') { var startPos = element.selectionStart; var endPos = element.selectionEnd; var cursorPos = endPos; var scrollTop = element.scrollTop; if (startPos != endPos) { element.value = element.value.substring(0, startPos) + edButtons[codTag].tagStart + element.value.substring(startPos, endPos) + edButtons[codTag].tagEnd + element.value.substring(endPos, element.value.length); cursorPos += edButtons[codTag].tagStart.length + edButtons[codTag].tagEnd.length; } else { if (!edCheckOpenTags(codTag) || edButtons[codTag].tagEnd == '') { element.value = element.value.substring(0, startPos) + edButtons[codTag].tagStart + element.value.substring(endPos, element.value.length); edAddTag(codTag); cursorPos = startPos + edButtons[codTag].tagStart.length; } else { element.value = element.value.substring(0, startPos) + edButtons[codTag].tagEnd + element.value.substring(endPos, element.value.length); edRemoveTag(codTag); cursorPos = startPos + edButtons[codTag].tagEnd.length; }; }; element.focus(); element.selectionStart = cursorPos; element.selectionEnd = cursorPos; element.scrollTop = scrollTop; } else { if (!edCheckOpenTags(codTag) || edButtons[codTag].tagEnd == '') { element.value += edButtons[codTag].tagStart; edAddTag(codTag); } else { element.value += edButtons[codTag].tagEnd; edRemoveTag(codTag); } element.focus(); }; }; return this.each(function() { $(this).click(function() { insertTag(options.id, options.codTag); }); }); }; |
Часовой пояс GMT +3, время: 12:39. |