Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Очередной баг jQuery? (https://javascript.ru/forum/jquery/14693-ocherednojj-bag-jquery.html)

monolithed 26.01.2011 17:15

Очередной баг jQuery?
 
Не могу понять, то ли это баг jQuery или я что-то упустул?
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>

<script>
$(function(){
    var $input = $('input');
    if($input != null) {
        $($input).bind({
            focus: function(){
                $(this).val() == this.defaultValue && $(this).val('');
                $($input).animate({width: $(window).width()-50+'px'}, 600, false);
            },
            blur: function(){
                if(!$(this).val()){
                    $(this).val(this.defaultValue);
                    $($input).animate({width:'100px'}, 600, false);
                }
            }
        });
    }
});
</script>

<form name="" action="">
    <input type="text" value="click" />
</form>


Как воспроизвести баг:
Кликнув на поле что-то печатаем, стираем и у уводим фокус (клик в любом месте документа), затем опять переводим фокус на текстовое поле и вводим текст, после чего курсор в текстовом поле пропадает....

тут можно потестить: http://jsfiddle.net/YVSQJ/

x-yuri 27.01.2011 06:21

мог в общем-то попроще и постандартнее привести пример (чтобы не было лишних подозрений). И сказать в каком браузере не работает. В ff точно баг. А что, это нормально, когда пропадает курсор? А с jQuery может быть так: кому могло прийти в голову сделать так. Эта их анимация мутна чуть более, чем полностью

<!doctype html>
<html>
<head>
    <script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
</head>
<body>
    <input type="text" value="click" />
    <script type="text/javascript">
        $('input').focus(function(){
            $('input').animate({width: 200});
        });
    </script>
</body>
</html>

Vulkan 27.01.2011 07:11

Да, в Firefox баг такой: наводишь курсор, что-нибудь печатаешь и даже можно не стирать просто фокус убираешь, а потом уже курсора не будет.
Бага не наблюдается в IE 8, Opera 11, Google Chrome 8.0.552.237, Safari 5.0.

monolithed 27.01.2011 09:23

Самое интересное, что периодически отправляю им явные баги, но они их не могут воспроизвести, пришлось последний раз даже видео записать.
Цитата:

Сообщение от Vulkan
Бага не наблюдается в IE 8, Opera 11, Google Chrome 8.0.552.237, Safari 5.0.

То-то и оно, я же не знаю на кого и думать :-?
Есть у кого-нибудь идеи как это побороть (отказаться от JQuery не предлагайте, т.к. не в моей компетенции)?

Vulkan 27.01.2011 09:38

Нашёл темку которая к jquery не относится, но относится к инпуту.

x-yuri 27.01.2011 09:39

в интернетах пишут, что надо с overflow экспериментировать, в частности, попробуй auto. Оно, наверняка, меняется в animate. Попробуй после анимации его изменить

p.s. google://disappear caret ff

monolithed 27.01.2011 10:01

Цитата:

Сообщение от Vulkan
Нашёл темку которая к jquery не относится, но относится к инпуту

ппц, этот баг в FF с 2005 висит:blink:
Цитата:

Сообщение от x-yuri
в интернетах пишут, что надо с overflow экспериментировать, в частности, попробуй auto. Оно, наверняка, меняется в animate. Попробуй после анимации его изменить

как оказалось jQuery тут совсем не причем, все дело было в FF.
auto как раз не нужно, т.к. оно полосу прокрутки добавляет, пришлось сделать так:

div {
    position: realative; /* обязательно */
    overflow: hidden; /* обязательно */
    /* width: икрементируется */
    z-index: 100;
}

input {
    width: 100%;
}

<div>
   <input type="text" value="click" />
</div>

x-yuri 27.01.2011 10:15

ну я ж говорю, что ты совершаешь много лишних движений...
<!doctype html>
<html>
<head>
    <script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
</head>
<body>
    <style type="text/css">
        input { overflow: hidden; }
    </style>
    <input type="text" value="click" />
    <script type="text/javascript">
        $('input').focus(function(){
            $('input').animate({width: 200});
        });
    </script>
</body>
</html>

monolithed 27.01.2011 10:16

Цитата:

Сообщение от x-yuri
ну я ж говорю, что ты совершаешь много лишних движений...

я наверное, не так выразился, это в моем случае нужны лишние движения:)


Часовой пояс GMT +3, время: 05:45.