Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 18.01.2013, 14:19
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Спасибо за ответ, но меня в целом интересует только зачем firstChild в setStart и setEnd? Что передает первый параметр? Почему бы просто не передать document.getElementById("id"), вместо document.getElementById("id").firstChild,
в том же примере на
http://learn.javascript.ru/vydelenie...роме-ie-9
Ответить с цитированием
  #12 (permalink)  
Старый 18.01.2013, 20:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

platedz,
Вариант ...
<!DOCTYPE HTML>
<html>
<body>
  <div contenteditable onkeyup = "test(this)">0123456789</div>
  <script>
  function getCaretPos(element) {
      element.focus();
      if (document.selection) {
          var sel = document.selection.createRange();
          var clone = sel.duplicate();
          sel.collapse(true);
          clone.moveToElementText(element);
          clone.setEndPoint('EndToEnd', sel);
          return clone.text.length;
      } else {
          return window.getSelection().getRangeAt(0).startOffset;
      }
      return 0;
  }

  function test(element) {
      var x = getCaretPos(element);
      var re = /([A-Za-z])/g;
      var str = element.childNodes[0].data
      if (str.search(re) > 0) x = str.search(re);
      str = str.toLocaleLowerCase().replace(re, '');
      element.childNodes[0].data = str;
      if (document.selection) { //
          var range = document.body.createTextRange();
          range.moveToElementText(element);
          range.collapse(true);
          range.moveStart('character', x)
          range.select();

      } else {
          var range = document.createRange();
          range.setStart(element.childNodes[0], x);
          range.collapse(true);
          var sel = window.getSelection();
          sel.removeAllRanges();
          sel.addRange(range);
      }
      element.focus();
  };
  </script>
</body>
</html>
Ответить с цитированием
  #13 (permalink)  
Старый 18.01.2013, 20:54
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Спасибо, то что нужно, только бы еще разобраться, что и как работает, хотелось не просто тупо код вставить, а как бы понимать что и где?
Т.ч. все-таки больше интересует вопрос по поводу setStart и setEnd, и первого параметра, который он передает.

Последний раз редактировалось platedz, 18.01.2013 в 20:57.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно установить куки? nip Общие вопросы Javascript 0 30.10.2012 19:55
Как в IE динамически установить значение события onClick? Гость Элементы интерфейса 6 16.01.2011 23:46
Как изменить текст при наведении курсора? sewernik Элементы интерфейса 2 13.04.2009 19:31
Как сделать ссылку картинку, которая изменяется при наводе курсора на неё? Кирилл Общие вопросы Javascript 2 10.03.2009 15:14
как определить позицию элемента относительно окна scuter Events/DOM/Window 5 07.05.2008 18:47