Требуется CFINPUT=да, не работает с CFLOOP

Когда я нажимаю кнопку «Отправить» (данные не вводились), текстовые поля были пустыми, и он по-прежнему переходит на следующую страницу без появления каких-либо сообщений. Кажется, что cfinput required="yes" не работает с cfloop. Я думал, что это должно работать даже с cfloop. Я не мог найти, что было не так. Как я могу заставить его работать? любая информация очень ценится. Спасибо.


<cfform name="theForm" action="nextPage.cfm" method="post"> 
<table>
<tr>
<td><cfinput  type="text" name="A" size="50" required="yes message="please enter your text"></td>
</tr>

<td><cfinput  type="text" name="B" size="50" required="yes message="please enter your text"></td>
</tr>
<cfloop from=1 to=5  index=i>
</tr>
<td><cfinput  type="text" name="C" size="50" required="yes message="please enter your text"></td>
</tr>
</tr>
<td><cfinput  type="text" name="D" size="50" required="yes message="please enter your text"></td>
</tr>
</cfloop>
<tr>
<td><cfinput type="submit" name="Submit" value="Submit"></td>
</tr>
</table>
</cfform>

person Ulala Zing    schedule 19.07.2013    source источник
comment
Прекратите использовать cfform и cfinout. Они не предлагают никаких реальных преимуществ делать это «настоящим» способом.   -  person Scott Stroz    schedule 21.07.2013


Ответы (3)


Чтобы это работало, вам нужно иметь уникальные ИМЕНА для каждого поля ввода. Прямо сейчас вы создаете набор входных данных с именами «C» или «D». Если какой-либо один «C» заполнен, то никакое другое поле с именем «C» не нужно заполнять. Создайте уникальные имена, используя переменную индекса, и проверка должна работать так, как вы предполагали.

<cfloop from=1 to=5  index=i>
</tr>
<td><cfinput  type="text" name="C_#i#" size="50" required="yes message="please enter your text"></td>
</tr>
</tr>
<td><cfinput  type="text" name="D_#i#" size="50" required="yes message="please enter your text"></td>
</tr>
</cfloop>
person Adrian J. Moreno    schedule 19.07.2013
comment
Да, name должны быть уникальными. К сожалению, сценарии проверки для текстовых полей могут обрабатывать только один элемент, а не массив элементов с одинаковыми именами. Таким образом, подпрограммы задыхаются и выдают синтаксическую ошибку. @UlalaZing - Вот почему форма отправляется без завершения проверки - потому что произошла ошибка. - person Leigh; 19.07.2013
comment
Подтвержденный. Это в основном дерьмовое программирование со стороны Adobe (демонстрация того, что их разработчики никогда не занимаются веб-разработкой и просто не понимают ее). Еще одна причина не использовать CFFORM и т. д. Кстати, у Railo есть такое же ограничение, но, по крайней мере, возникает исключение при запуске этого кода. - person Adam Cameron; 20.07.2013
comment
.. или отсутствие программирования. Я не думаю, что этот конкретный раздел сценариев проверки сильно изменился со времен Macromedia. Они могли бы хотя бы добавить приличное сообщение об ошибке. - person Leigh; 20.07.2013
comment
Да, честный полицейский. Это сломалось и в CFMX7. - person Adam Cameron; 20.07.2013

Синтаксическая ошибка в теге cfinput

Так должно быть

<cfinput type="text" name="D" size="50" required="yes" message="please enter your text">

После да пропущена кавычка

person James A Mohler    schedule 19.07.2013
comment
Вероятно, это просто ошибка копирования + вставки, иначе они получат ошибку компиляции. - person Leigh; 19.07.2013
comment
Как можно копировать и вставлять так много? - person Adam Cameron; 20.07.2013

В дополнение к тому, что было сказано, вы должны использовать что-то еще, а не cfform, если вы хотите чего-то большего, чем базовая проверка. Материал cfform действительно унаследован, и в наши дни есть гораздо лучшие варианты.

person snake    schedule 19.07.2013