У меня есть форма, которая используется как интерфейс для CRUD для записей базы данных. Некоторые из элементов в форме взаимозависимы, так что если одно поле имеет значение X, то другие поля должны быть сделаны и заполнены пользователем.HTML: Лучшая практика для POSTing пустых/отключенных форм элементов
Простым примером может быть что-то вроде личной информации раздела:
<select name="relationship-status">
<option value="single">Single</option>
<option value="married">Married</option>
</select>
<input type="text" name="spouse-first-name" />
<input type="text" name="spouse-last-name" />
... где поля spouse-first-name
и spouse-last-name
потребовались бы, если relationship-status
был установлен в married
, и будут отключены (или скрытые) в противном случае.
Вопрос в том, что в этом примере, когда человек выходит из брака в одиночку и хочет обновить свои данные как таковой, мы также хотим очистить значения имени супруга и отправить его обратно на сервер, чтобы значения очищается в базе данных. Мы можем использовать JavaScript для очистки полей для них, когда они меняются на single
, но если мы отключим элементы формы, чтобы они не могли их редактировать, они не получают POSTed при отправке формы.
я могу думать о следующих решениях:
Мы могли бы сделать их
readonly
вместоdisabled
, но этот метод работает только для некоторых форм контроля (в частности, он не работает для другихselect
элементов), так что это не вариант.Мы можем дублировать каждое из этих полей как вход
hidden
, который будет POSTed с формой, но не редактируется пользователем, но это похоже на такой взлом.Мы также можем включить отключенные поля перед отправкой, а затем снова отключить их. Это метод, который я использую прямо сейчас, но я чувствую, что у меня что-то не хватает, и должен быть лучший способ.
Есть ли что-то я не думал или более разумный способ выполнения как:
- Не позволяет пользователю редактировать поле, и
- Учитывая значение поля к быть POSTed с формой, даже если пустой.
Вы должны работать для обеспечения соблюдения действительности данных на стороне сервера.Это означает, что когда кто-то изменяет статус на «одиночный», имя супруга должно быть очищено сервером независимо от значения POST. –
Согласовано. Валидация на стороне клиента предназначена для создания лучшего пользовательского интерфейса. * Проверка на стороне сервера предназначена для обеспечения целостности данных и бизнес-правил. – David
Спасибо вам обоим, и я просто могу сделать это по другим причинам; однако на самом деле он не отвечает на вопрос, который я задал. Существуют и другие сценарии, в которых проверка сервера не помогла бы вообще. – FtDRbwLXw6