все правильно, ссылка, исчезающий инпут и кнопка.
С кнопкой поступают так: Инициализируют состояние (так как тут только два состояния, то подойдет булева переменная btnState) и в обработчике по клику на кнопку выполняют нужное действие:
if (btnState) {
// показываем инпут, заменяем текст кнопки на "сохранить"
} else {
//прячем инпут, заменяем у ссылки href, показываем ссылку
};
btnState = !btnState; // (инвертируем состояние кнопки)