Вот ты говоришь если убрать текст, то поле должно исчезнуть. А где у тебя такая проверка в коде?
Используй событие input текстового поля:
<script>
function toggleBlock(selector, show) {
var block = $(selector);
if (block.is(':visible') !== show) {
block.animate({height: show ? 'show' : 'hide'}, 500);
}
}
</script>
<input type="text" oninput="toggleBlock('#block_id', !!this.value)" />
ЗЫ:
В осле 7-8 версий нет события input. вместо него есть propertychange. Так что нужно просто продублировать значение атрибута oninput и для атрибута onpropertychange