Перемещение курсора для запуска, когда он сфокусирован

Я пытаюсь воспроизвести поведение раздела комментариев в facebook, поэтому, когда пользователь хочет добавить новый комментарий, цвет текста исчезает, а курсор находится в начале нового сообщения. Я использую этот код:

var inp = document.getElementsByTagName('input')[1];
if (inp.createTextRange) {
    var part = inp.createTextRange();
    part.move("character", 1);
    part.select();
} else if (inp.setSelectionRange){
    inp.setSelectionRange(1, 1);
}

и кажется, что это работает, но когда я пытаюсь поместить его в селектор Jquery следующим образом:

$("#massages_body input").focus(function(){ 
  $(this).css('color', 'rgba(128,128,128,0.4)');
  if ($(this).createTextRange) {
      var part = $(this).createTextRange();
      part.move("character", 1);
      part.select();
  } else if ($(this).setSelectionRange){
      $(this).setSelectionRange(1, 1);
  } 
});

это вообще не работает. Я уверен, что неправильно использую Jquery или Javascript, но не могу найти проблему. Спасибо за вашу помощь!


person user3319445    schedule 24.02.2014    source источник
comment
Попробуйте зарегистрировать свой селектор в консоли, чтобы убедиться, что он существует и является именно тем, что вы ожидаете: console.log($(this)); в качестве второй линии. Когда вы фокусируетесь, он должен выплевывать ваш сфокусированный элемент. В Chrome вы должны иметь возможность видеть много информации об элементе, включая родителя, дочерние элементы (если есть), братьев и сестер, значение, атрибуты и свойства. Ведение журнала в консоли неоценимо для поиска ошибок в javascript.   -  person Lazerblade    schedule 24.02.2014


Ответы (1)


Я полагаю, что вы думаете о том, что Facebook использует заполнители ввода формы, которые являются частью спецификации HTML5 и поддерживаются всеми основными и современными браузерами.

Вы можете использовать эту библиотеку, чтобы воспроизвести этот эффект и для устаревших браузеров: Placeholders.js

person SlashmanX    schedule 24.02.2014