Как поправить JS для корректной работы input поля?

iHits

Создатель
Регистрация
4 Фев 2014
Сообщения
37
Реакции
1
Автоматически заполоненное поле fieldset input через сохраненный логин и пароль работает некорректно.
Текст заполненного поля выходит поверх текста подсказки поля.
При заполненном поле текст подсказки должен быть сверху.
Когда введено значение автоматически, то скрипт не определяет и подсказку не сдвигает. Нужно чтобы скрипт определил, что текст уже заполнено внутри и сдвинулся вверх.

Наверно нужно что то дописать сюда:
Код:
<script type="text/javascript">
$('input').on('blur', function(){
  if( !$(this).val() == "" ){
    $(this).next().addClass('stay');
  } else {
    $(this).next().removeClass('stay');
  }
});
</script>

Ссылка на скрипт:
Для просмотра ссылки Войди или Зарегистрируйся

193d9470ff0e9a2f87027c7363d990b7.png
 
В хроме все прекрасно пашет!
В каком браузере проверяете?
Скорее всего проблема в несовместимости, возможно версии JQ
 
В хроме все прекрасно пашет!
В каком браузере проверяете?
Скорее всего проблема в несовместимости, возможно версии JQ
Работает и у меня в Chrome только когда в браузере есть сохраненный пароль и логин, и эти поля автоматически заполнены, то отображается не корректно.
 
теперь понял суть вопроса.
99.99% не решите проблему ибо в хроме поля что заполняются им автоматом, не управляемы.
Я не один далеко, кто пытался эти поля контролировать CSS, у меня и моих знакомых это не вышло.
Может конечно если заюзать какие то спецефические методы именно для хрома, как то и можно решить, но стандартные методы имхо не применимы.
 
используйте $(document).ready();
помогите с этим кусочком скрипта, буду очень благодарен. Я в js ноль =(
если так, то не работает:

Код:
$(document).ready(function() {
    $('input').on('blur', function(){
      if( !$(this).val() == "" ){
        $(this).next().addClass('stay');
      } else {
        $(this).next().removeClass('stay');
      }
    });
});
 
Последнее редактирование:
Да так.
Или в такое еще можно обернуть, вместо $(document).ready

(function($){


Ваш код:


})(jQuery);


Вот скрин поясняющий почему у вас ничего не выйдет. Поля заполнены браузером, но в коде нету значений, JS не видит эти значения! JQuery работает с DOM а в DOM этих значений нету!

upload_2015-2-4_9-18-5.png
 
Последнее редактирование:
Вот есть вариант, он работает.
Код:
if (navigator.userAgent.toLowerCase().indexOf("chrome") >= 0) {
    $(window).load(function(){
        $('input:-webkit-autofill').each(function(){
           var id = $(this).attr('id');
            $('label[for='+id+']').addClass('stay');
        });
    });
}
 
Вот как раз то о чем я и говорил, полностью специфичный вариант решения вопроса именно в хроме.
Остается вопрос, в FF, Opera и IE проблем аналогичных нету?
 
Вот как раз то о чем я и говорил, полностью специфичный вариант решения вопроса именно в хроме.
Остается вопрос, в FF, Opera и IE проблем аналогичных нету?
В IE проверял- не работает.
Тот парень что помог написал:
Да, в остальных наверное будет работать лишь тогда когда их разработчики поумнеют )
Так что или нужно ждать чтобы поумнели, или нужно для каждого браузера отдельно искать решение. =)
 
Назад
Сверху