Я хочу заменить кнопку полем ввода, где пользователь что-то вводит и нажимает кнопку ввода. После этого кнопка с начала должна появиться снова. Мой скрипт работает до сих пор, но я не могу повторить это после его завершения.jQuery - Замена элемента HTML несколько раз
Обновление: Кнопка также должна появиться снова, если поле ввода отображается, но пользователь не хочет ничего вводить и щелкает в другом месте.
Код:
<button id="createButton">Create item</button>
/*
jquery stuff
*/
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('#createButton').click(function(event) {
$(this).replaceWith('<input type="text" id="buttonInput" placeholder="e.g. books, movies" autofocus>');
});
$(this).on('keypress', function (event) {
if(event.which == '13'){ // If enter button is pressed
alert('You entered something');
$('#buttonInput').replaceWith('<button id="createButton">Create item</button>');
}
});
});
</script>
Update 2: Я обновил код с шкурой() и шоу(), чтобы получить тот же результат. Но как я могу позволить вводу исчезнуть, если пользователь щелкнет где-то внутри тела без избыточности?
Новый код:
<button id="createButton">Create item</button>
<input type="text" id="input" placeholder="e.g. books, movies" autofocus>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('#input').hide();
$(document).on('click', '#createButton', function (event) {
$(this).hide();
$('#input').show().focus();
});
$('#input').on('keypress', function (event) {
if (event.which == '13') { // if enter button is pressed
$(this).hide().val('');
$('#createButton').show();
}
});
});
</script>
Спасибо за все ваши ответы. Подход show-hide намного проще. – user3147268
@ user3147268 Обновленный ответ. –