Получение элемента ColdFusion 10 не определено в форме ошибки - PullRequest
0 голосов
/ 27 августа 2018

У меня есть форма ColdFusion 10, к которой я добавляю новый список множественного выбора

<SELECT multiple="multiple" id="icd9list" 
    name="icd9list" 
    size="2" 
    class="pageText2" 
    style="width:400px;">
</SELECT>

Он правильно отображается в форме, и я могу добавить к нему элементы с помощью JavaScript, но когда я приступаю к обработке формы, на странице действия формы выдается следующая ошибка:

Элемент ICD9LIST не определен в FORM.

Я добавил теги cfparam на начальной странице формы, а также на страницу действий формы, где я получаю сообщение об ошибке.

Не могу понять, почему он не передает элемент формы на страницу действий. Этот метод post, поэтому он должен его забрать. Все остальные элементы формы на странице подобраны отлично.

<cfform action="updform.cfm" name="custform" method="POST">

Я также пытался использовать custform.icd9list и получил ту же проблему:

Элемент ICD9LIST не определен в CUSTFORM.

Эта страница является ОЧЕНЬ унаследованным кодом, который мы не можем на самом деле вернуться и слишком много реорганизовать. Единственное, о чем я думаю, это то, что при первой загрузке страницы опция множественного выбора остается пустой, а затем мы добавляем к ней опции через javascript из всплывающего окна после свершившегося факта. Когда я проверяю элемент в Chrome, после того, как я добавил к нему опции, они есть, но мне интересно, обрабатывается ли он как пустой список множественного выбора. Я точно знаю, что если я удалю атрибут множественного атрибута и обработаю элемент формы как один выпадающий список, он будет отображаться в дампе формы со значением, но только с первым (или любым другим выбранным) значением.

Начинаю думать, что ответом может быть скрытое поле с заполненными значениями параметров, и пусть форма читает это.

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Добавление параметров в список множественного выбора недостаточно. Они также должны быть выбраны. В противном случае список не считается успешным элементом управления , и поле не будет передано на страницу действий (выделено мной)

Успешный элемент управления «действителен» для отправки. Каждый успешный элемент управления имеет его имя элемента в паре с его текущим значением как часть представленный набор данных формы. Успешный контроль должен быть определен внутри элемента FORM и должен иметь имя элемента управления.

Тем не менее:

  • Отключенные элементы управления не могут быть успешными.
  • Если форма содержит более одной кнопки отправки, успешной будет только активированная кнопка отправки.
  • Все флажки «вкл» могут быть успешными.
  • Для радиокнопок, имеющих одинаковое значение атрибута name, может быть успешным только радиокнопка "on".
  • Для меню имя элемента управления предоставляется элементом SELECT, а значения - элементами OPTION. Только выбранные опции могут быть успешный. Если не выбраны параметры, элемент управления не успешно, и ни имя, ни какие-либо значения не передаются сервер при отправке формы .
  • Текущее значение выбора файла представляет собой список из одного или нескольких имен файлов. После отправки формы содержимое каждого файла представлены с остальными данными формы. Содержимое файла упакованы в соответствии с типом содержимого формы.
  • Текущее значение объекта управления определяется реализацией объекта.

Я подозреваю, что форма не обязывает "выбирать" элементы перед отправкой формы, и поэтому на странице действий ничего не отображается.

0 голосов
/ 28 августа 2018

Похоже, вам нужна одна из двух вещей

Либо требуется на стороне клиента

<SELECT multiple="multiple" required id="icd9list" name="icd9list" size="2" class="pageText2" style="width:400px;">
...
</SELECT>

Или убедитесь, что ColdFusion может обработать его, не существующий на стороне сервера.

<cfparam name="icd9list" default="">

Как указано,

<cfparam name="form.icd9list" default="">

получит еще более узкий охват

0 голосов
/ 27 августа 2018

Как вы звоните в форме? Вы используете form.variable или icd9list.variable? Вы не должны давать ему идентификатор или имя, если на странице нет нескольких форм. Вы можете просто name и ID свой элемент и ссылаться на него следующим образом: form.name

...