[object Object]
происходит от cityName = messageVar;
В предыдущих строках вы использовали messageVar.val()
для получения значения, но в этой строке вы присваиваете весь объект jQuery, а не его значение, cityName
.
Когда вы пытаетесь структурировать объект, вы получаете "[object Object]"
в качестве вывода.
Что касается начальной загрузки страницы, вы можете вызвать одно из событий, чтобы обработчик событий установил текст.
Ниже приведена более простая версия, которая также запускает начальное событие. Также обратите внимание, что bind()
не рекомендуется использовать on()
var cityName, originalCity = 'London';
$('#messageInput').on('input keyup', function() {
const val = this.value.trim();
// use input value if it has length or use the original
cityName = !!val.length ? val : originalCity;
$('#messageOutput').text(cityName);
console.clear()
console.log(cityName);
}).trigger('input')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="messageInput" />
<span id="messageOutput"></span>