Хороший вопрос. Я не думаю, что существует универсальная лучшая практика, которая охватывает все ситуации. Как правило, чем более дружественным является ваше решение, тем выше сложность реализации, тем меньше вероятность того, что решение будет изящно унизительным (если вы не были очень, очень осторожны).
Кроме того, есть последствия для любого подхода, который вы выбрали. Например, автоматическое сохранение периодически может , а не быть хорошей идеей, когда требуется существенная проверка данных. Пользователь может ввести некоторые данные и через несколько секунд получить сообщение об ошибке. Мгновенная обратная связь была бы гораздо более полезной для пользователя в такой ситуации, поскольку вполне возможно, что ввод, который привел к неудачной валидации, был, скажем, несколькими действиями назад, поэтому он может несколько запутать пользователя.
Сохранение всякий раз, когда пользователь что-то меняет (нажатие клавиши, выбор флажка и т. Д.), кажется подходом с точки зрения удобства использования, но опять же, это зависит от того, что вы делаете и может иметь негативные побочные эффекты. Например, если у пользователя медленное соединение, он может почувствовать, что ваш сайт работает медленно или глючит. Это также привело бы к гораздо большему количеству запросов к базе данных, чем старый метод «click save».
Полагаю, очевидным способом обойти некоторые из перечисленных выше предостережений было бы включение проверки на стороне клиента на месте, но в конечном итоге вполне может оказаться, что ваши тестеры в прихожей сказать.
Итоговая рекомендация: создайте старые формы «щелкни, чтобы сохранить» и улучшите их, следя за тем, чтобы все не сломалось без JavaScript (если только у вас нет явного разрешения вышестоящего органа). Надеюсь, что это не все глупости.