Я использую bootstrap-wysihtml5, поэтому получаю ввод от поля ввода текстового поля. Чтобы улучшить работу с пользователем, я хочу, чтобы авторезистировать текстовое поле, чтобы оно соответствовало входному тексту.Как правильно авторизовать текстовое поле wysihtml5
С помощью кода в this Gist Я могу изменить размер текстового поля при нажатии, но не при загрузке.
Вот моя текущая реализация:
var container = $("#container");
var textarea = $("<textarea />");
textarea.attr("style", "width: 90%;");
container.append(textarea);
textarea.wysihtml5({
"font-styles": false,
"emphasis": false,
"lists": false,
"html": false,
"link": false,
"image": false,
"color": false
});
textarea.val("<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div<div><br></div><div>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur..</div");
textarea.observe("load", function() {
var $iframe = $(this.composer.iframe);
var $body = $(this.composer.element); // <body marginwidth="0" marginheight="0" contenteditable="true" class="wysihtml5-editor" spellcheck="true" style="color: rgb(85, 85, 85); cursor: auto; font-family: HelveticaNeue-Light, 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; line-height: 20px; letter-spacing: normal; text-align: start; text-decoration: none; text-indent: 0px; text-rendering: auto; word-break: normal; word-wrap: break-word; word-spacing: 0px; min-height: 0px; overflow: hidden; background-color: rgb(255, 255, 255);"><div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<br></div><div>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur..</div></body>
$body.css({
'min-height': 0,
'line-height': '20px',
'overflow': 'hidden',
})
var scrollHeightInit = $body[0].scrollHeight; // 3860
var bodyHeightInit = $body.height(); // 3860
var heightInit = Math.min(scrollHeightInit, bodyHeightInit); // 3860
$iframe.height(heightInit);
$body.bind('keypress keyup keydown paste change focus blur', function(e) {
var scrollHeight = $body[0].scrollHeight; // 150
var bodyHeight = $body.height(); // 60
var height = Math.min(scrollHeight, bodyHeight); // 60
$iframe.height(height);
});
});
Как вы можете видеть height
оценивается в , что является правильным. Но heightInit
оценивается как , что является неправильным. Как это исправить?
Можете ли вы опубликовать минимальный рабочий пример вашего кода? –
Hi @ GabyakaG.Petrioli. Вышеприведенный код действительно работает. Это просто дает мне неправильное значение heightInit. Поэтому, если вы хотите протестировать его, вы должны это сделать, а затем подтвердить мои результаты, выполнив 'console.log (heightInit);'. – ChristofferJoergensen
Я имел в виду, если есть живая страница (* http: //jsfiddle.net, http: //codepen.io*), поэтому нам не нужно создавать полную страницу со всеми плагинами и т. Д. –