За последние 24 часа нас посетили 24994 программиста и 2020 роботов. Сейчас ищет 941 программист ...

textarea выделение

Тема в разделе "JavaScript и AJAX", создана пользователем udodirc, 18 апр 2012.

  1. udodirc

    udodirc Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    111
    Симпатии:
    0
    Здрствуйте есть функция
    Код (Text):
    1.  
    2.     function get_position(element, mode)
    3.     {  
    4.         if (element.selectionStart)
    5.         {
    6.             if(mode > 0)
    7.             {  
    8.                 return element.selectionStart;
    9.             }
    10.             else
    11.             {  
    12.                 return element.selectionEnd;
    13.             }        
    14.         }
    15.         else if (document.selection)
    16.         {
    17.             element.focus();
    18.             var select_text = document.selection.createRange();
    19.            
    20.             if (select_text == null)
    21.             {
    22.                 return 0;
    23.             }
    24.  
    25.             var text_range = element.createTextRange(),
    26.             text_duplicate = text_range.duplicate();
    27.             text_range.moveToBookmark(select_text.getBookmark());
    28.  
    29.             if(mode > 0)
    30.             {
    31.                 text_duplicate.setEndPoint('EndToStart', text_range);
    32.             }
    33.             else
    34.             {
    35.                 text_duplicate.setEndPoint('EndToEnd', text_range);
    36.             }
    37.            
    38.             return text_duplicate.text.length;
    39.         }
    40.        
    41.         return 0;
    42.     }
    Эта функция возвращает позицию начала и конца выделения. Так вот, когда я выделяю текст, она мне возвращает номер позиции начала строки выделения и номер позиции концаа строки выделения. Работает все правильно, но если я выделяю строку с начала текста,то selectionStart возвращает мне 0, и selectionEnd возвращает тоже 0, хотя должен вернуть мне конец выделения.
     
  2. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Та по моему все оч банально в сравнениях всегда значения приодятся к типу boolean... Во многих языках начало всегда 0 и он приводитя к false
    надо поставить if (element.selectionStart!==false)
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дык он пишет, что и конец выделения - тоже ноль. это нормально?
     
  4. udodirc

    udodirc Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    111
    Симпатии:
    0
    Все правильно, но как обойти эту ошибку?
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не сталкивался =(