Autogrow jQuery плагин для динамического содержимого в Internet Explorer - PullRequest
1 голос
/ 16 сентября 2009

Я использую плагин здесь http://plugins.jquery.com/project/autogrow, и у меня возникла проблема в Internet Explorer и Chrome (не Firefox)

См. Код ниже:

<script type="text/javascript">
    $(document).ready(function() {
        $('#main').html('<textarea class=\"test\">aaaa</textarea>');
        $('.test').autogrow();
</script>

</head>

<body>
<div id="main">
</div>
</body>
</html>

В принципе, если элемент новый после запуска страницы, он не работает. Поэтому я немного взломал плагин и изменил эти строки с помощью livequery (строка 68)

        this.textarea.livequery(function() {
    $(this).focus(function() {self.startExpand()});
    $(this).blur(function() {self.stopExpand()});
        });

Однако, это все еще не работает, хотя Firefox в порядке.

Вы можете помочь?

1 Ответ

2 голосов
/ 16 сентября 2009

Я заставил его работать в Chrome / Safari, внеся следующие два изменения:

  1. В вашем коде измените "$('#main').html('<textarea class=\"test\">aaaa</textarea>');", чтобы включить стиль line-height, например: "$('#main').html('<textarea class=\"test\" style=\"line-height: 16px\">aaaa</textarea>');"
  2. Измените строку 50 файла jquery.autogrow.js с "if(this.line_height == NaN)" на "if(isNaN(this.line_height))"

Эффект довольно нервный в Chrome / Safari, похоже, это как-то связано с тем, что WebKit сообщает о новой примененной высоте текстовой области как 4px меньше, чем вы установили, я полагаю, это связано с блочной моделью и некоторыми браузер применял стили, но я не знаю. Если вы довольны эффектом в FF, тогда это должно сработать, так как в FireFox это тоже довольно нервно.

...