показать / скрыть текстовое поле меняет свою высоту - PullRequest
0 голосов
/ 10 июня 2019

Нажмите ŞHOW / HIDE несколько раз.
Вы увидите, что после каждого клика текстовая область становится все более и более высокой.
В чем причина и как этого избежать.
Мне нужна текстовая область всегдачтобы соответствовать содержанию.

$('#btna').on('click', function(){
$('#txa').hide()
});

$('#btnb').on('click', function(){
$('#txa').show()
let a = $('#txa').prop('scrollHeight');
$('#txa').height(a);
});
#txa, #txb{
display:block;
width:100%;
resize:none;
overflow:hidde;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<textarea id='txa'>
lorem ipsum
lorem ipsum
</textarea>

<button id='btnb'>SHOW</button>
<button id='btna'>HIDE</button>

Ответы [ 3 ]

1 голос
/ 10 июня 2019

Пожалуйста, попробуйте это.

$('#btna').on('click', function(){
$('#txa').hide()
});

$('#btnb').on('click', function(){
$('#txa').show()
});


autosize();
function autosize(){
    var text = $('#txa');

    text.each(function(){
        $(this).attr('rows',1);
        resize($(this));
    });

    text.on('input', function(){
        resize($(this));
    });
    
    function resize ($text) {
        $text.css('height', 'auto');
        $text.css('height', $text[0].scrollHeight+'px');
    }
}
#txa, #txb{
display:block;
width:100%;
resize:none;
overflow:hidden;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<textarea id='txa' name="md-content">
lorem ipsum
lorem ipsum
sdf
sdf
sdf
sdf
sdf
sdf
s
</textarea>

<button id='btnb'>SHOW</button>
<button id='btna'>HIDE</button>
0 голосов
/ 10 июня 2019

Удалите следующие 2 строки из вашего скрипта

let a = $('#txa').prop('scrollHeight');
$('#txa').height(a);

Это все еще работает и не добавляет дополнительную строку в поле textarea.

0 голосов
/ 10 июня 2019

Вот, пожалуйста, манипуляции с высотой были не нужны.

$('#btna').on('click', function(){
$('#txa').hide()
});

$('#btnb').on('click', function(){
$('#txa').show()
});
#txa, #txb{
display:block;
width:100%;
resize:none;
overflow:hidde;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<textarea id='txa'>
lorem ipsum
lorem ipsum
</textarea>

<button id='btnb'>SHOW</button>
<button id='btna'>HIDE</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...