2014-01-10 2 views
2

Я пытаюсь представить форму html, которая включает флажки для дней недели. Когда они проверяются, я передаю значение 1 для этого флажка. Чтобы обрабатывать непроверенные поля, я передаю значение 0 в теге CFPARAM на странице действия формы.Ошибка HTML-формы в ColdFusion: «Элемент __ не определен в FORM».

Я беру эти входные данные и добавляю их в структуру, которую я передаю в веб-сервис.


код формы (opentroubleticket.cfm):

<form action = "opentroubleticketaction.cfm" method="post" id="myForm" name="myForm"> 
    <cfoutput><input type="checkbox" name="Loc_Mon" value="1"> MON </cfoutput> 
    <cfoutput><input type="checkbox" name="Loc_Tue" value="1"> TUE</cfoutput> 
    <cfoutput><input type="checkbox" name="Loc_Wed" value="1"> WED </cfoutput> 
    <cfoutput><input type="checkbox" name="Loc_Thu" value="1"> THU </cfoutput> 
    <cfoutput><input type="checkbox" name="Loc_Fri" value="1" > FRI</cfoutput> 
    <cfoutput><input type="checkbox" name="Loc_Sat" value="1" > SAT</cfoutput> 
    <cfoutput><input type="checkbox" name="Loc_Sun" value="1" > SUN</cfoutput> 
    <input type="submit" name="submit" value="SUBMIT" class="beef"> 
</form> 


Действие Код (opentroubleticketaction.cfm):

<cfparam name="Loc_Mon" default="0"> 
<cfparam name="Loc_Tues" default="0"> 
<cfparam name="Loc_Wed" default="0"> 
<cfparam name="Loc_Thu" default="0"> 
<cfparam name="Loc_Fri" default="0"> 
<cfparam name="Loc_Sat" default="0"> 
<cfparam name="Loc_Sun" default="0"> 

<!---some other stuff---> 

<cfscript> 
    BodyRT = structNew(); 
    BodyRT.RepairRequest = structNew(); 
    BodyRT.RepairRequest['Loc_Mon']=form.Loc_Mon; 
    BodyRT.RepairRequest['Loc_Tue']=form.Loc_Tue; 
    BodyRT.RepairRequest['Loc_Wed']=form.Loc_Wed; 
    BodyRT.RepairRequest['Loc_Thu']=form.Loc_Thu; 
    BodyRT.RepairRequest['Loc_Fri']=form.Loc_Fri; 
    BodyRT.RepairRequest['Loc_Sat']=form.Loc_Sat; 
    BodyRT.RepairRequest['Loc_Sun']=form.Loc_Sun; 
</cfscript> 

<!---some other stuff---> 

Когда я отправить форму со всеми проверил коробки, он проходит через и правильно переходит к web-сервису со значением = 1 для каждого входа. Когда я отправлю форму с помощью непроверенных боксов, я получаю эту ошибку:
Element LOC_MON is undefined in FORM
Почему этот элемент не определен, даже если я установил значение по умолчанию с тегом CFPARAM?

Если я проверяю коробку MON, она говорит Element LOC_TUE is undefined in FORM и так далее.

+0

Если бы это произошло только во вторник, я бы сказал, что это потому, что имя элемента ввода не соответствует cfparam. –

+1

Вы должны обладать вашими переменными формы в тегах '' (и, действительно, просто все время: всегда укажите свои переменные). Если - ради аргумента - если у вас уже есть переменная 'variables.Loc_Mon', ваш scopeless' 'не поможет вам по умолчанию' form.Loc_Mon'. –

+0

Спасибо @AdamCameron, это хороший момент ... это не решило проблему, но я добавил ее в любом случае для лучшей практики. –

ответ

2

Что вы видите, это по умолчанию флажки в HTML-формах. Значения передаются, только если флажок (ы) отмечен. Если флажок не установлен, поля формы не передаются.

Reference

Как уже упоминалось в комментариях, почему ваши <cfparam> теги не поймать это состояние, потому что вы не их область видимости. Это должно решить вашу проблему.

Я также заметил в комментариях, что вы сказали, что определение области не устраняет проблему. Это потому, что у вас также есть опечатка в вашем коде (или, по крайней мере, неправильное совпадение). В теге <cfparam> для переменной вторника вы задаете имя как Loc_Tues (обратите внимание на 's' на конце). Позже в коде вы ссылаетесь на Loc_Tue (без 's'). Поэтому добавьте область form. в свои теги <cfparam> и исправьте это неправильно, тогда вам должно быть хорошо идти.

<cfparam name="form.Loc_Mon" default="0"> 
<cfparam name="form.Loc_Tue" default="0"> 
<cfparam name="form.Loc_Wed" default="0"> 
<cfparam name="form.Loc_Thu" default="0"> 
<cfparam name="form.Loc_Fri" default="0"> 
<cfparam name="form.Loc_Sat" default="0"> 
<cfparam name="form.Loc_Sun" default="0"> 
+0

Спасибо @Miguel! Добавление области 'form.' в мой тег' cfparam' сделал трюк. –

 Смежные вопросы

  • Нет связанных вопросов^_^