2016-06-04 2 views
1

я нашел следующий очень простой способ, чтобы автоматически настроить текстовое поле, чтобы с высоты текста в этом jsfiddle http://jsfiddle.net/tovic/gLhCk/:Автоматическое изменение размера в текстовое поле начальной загрузки

function expandTextarea(id) { 
 
    document.getElementById(id).addEventListener('keyup', function() { 
 
     this.style.overflow = 'hidden'; 
 
     this.style.height = 0; 
 
     this.style.height = this.scrollHeight + 'px'; 
 
    }, false); 
 
} 
 

 
expandTextarea('txtarea');
body { 
 
    padding:50px; 
 
} 
 

 
textarea { 
 
    margin:0px 0px; 
 
    padding:5px; 
 
    height:16px; 
 
    line-height:16px; 
 
    width:96%; 
 
    display:block; 
 
    margin:0px auto;  
 
}
<textarea id="txtarea" spellcheck="false" placeholder="Statusku..."></textarea>

Однако, я использую самозагрузки в моем проекте, и это создает проблемы.

  1. Текстовое поле - всего 4 пикселя вместо 16. Похоже, что бутстрап изменяет способ использования полей, paddings и высот.
  2. При попадании внутрь текст подпрыгивает вверх и вниз, что раздражает глаз.

Я попытался удалить все классы начальной загрузки в инспекторе HTML моего браузера, но проблема все еще была там. Кто-нибудь есть идея, как решить это?

Вот код при добавлении CSS Bootstrap в:

function expandTextarea(id) { 
 
    document.getElementById(id).addEventListener('keyup', function() { 
 
     this.style.overflow = 'hidden'; 
 
     this.style.height = 0; 
 
     this.style.height = this.scrollHeight + 'px'; 
 
    }, false); 
 
} 
 

 
expandTextarea('txtarea');
body { 
 
    padding:50px; 
 
} 
 

 
textarea { 
 
    margin:0px 0px; 
 
    padding:5px; 
 
    height:16px; 
 
    line-height:16px; 
 
    width:96%; 
 
    display:block; 
 
    margin:0px auto;  
 
}
<!-- Latest compiled and minified CSS --> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> 
 

 

 

 
<textarea id="txtarea" spellcheck="false" placeholder="Statusku..."></textarea>

+0

Я искал, как AutoExpand текстового поля тоже. Я занимаюсь учебным курсом python и использую pycharm. Где я все это вкладываю? >.> Мой код до сих пор:

Raksha

ответ

2

Спасибо за все ваши ответы, он дал мне ценные сведения, что я должен был изменить. В конце концов, немного больше padding-bottom в css сделал трюк.

function expandTextarea(id) { 
 
    document.getElementById(id).addEventListener('keyup', function() { 
 
     this.style.overflow = 'hidden'; 
 
     this.style.height = 0; 
 
     this.style.height = this.scrollHeight + 'px'; 
 
    }, false); 
 
} 
 

 
expandTextarea('txtarea');
body { 
 
    padding:50px; 
 
} 
 

 
textarea { 
 
    /* margin:0px 0px; this is redundant anyways since its specified below*/ 
 
    padding-top:10px; 
 
    padding-bottom:25px; /* increased! */ 
 
    /* height:16px; */ 
 
    /* line-height:16px; */ 
 
    width:100%; /* changed from 96 to 100% */ 
 
    display:block; 
 
    /* margin:0px auto; not needed since i have width 100% now */ 
 
}
<!-- Latest compiled and minified CSS --> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> 
 

 

 

 
<textarea id="txtarea" spellcheck="false" placeholder="Statusku..."></textarea>

-1

Вы можете использовать важно, чтобы перезаписать загрузочный свойство!.

textarea { 
    margin:0px 0px; 
    padding:5px; 
    height:16px !important; 
    line-height:16px; 
    width:96%; 
    display:block; 
    margin:0px auto;  
} 
+0

Вы попробовали? кажется, не имеет желаемого эффекта для меня? – bersling

+0

еще одна вещь, которую вы можете сделать, удалить свойство textarea из css и добавить класс form-control в textarea.

+0

все еще прыгает и все еще не соответствует высоте. также! важно исправляет его до 16, но я хочу, чтобы он изменялся. – bersling

1

заменить height с min-height

textarea { 
    margin:0px 0px; 
    padding:5px; 
    min-height:16px; 
    line-height:16px; 
    width:96%; 
    display:block; 
    margin:0px auto;  
} 
+0

ОК, похоже, это работает для проблемы. У вас также есть ответ на проблему два? ;) – bersling

+1

см. Ссылку https://jsfiddle.net/mpfcz076/1/ –

+0

@bersling проверить ссылку у меня есть обновление js –

Смежные вопросы