我正在嘗試提交一個包含星期幾複選框的html表單。當他們被檢查時,我爲該複選框傳遞值1。要處理未經檢查的框,我在表單操作頁面的CFPARAM標記中傳遞值0。ColdFusion中的HTML表單錯誤:「元素__在FORM中未定義」。
我將這些表單輸入添加到我傳遞給web服務的結構中。
表單代碼(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--->
當我提交的形式與所有檢查框,它通過併爲每個輸入正確傳遞值爲1的Web服務。當我提交帶有未選中框的表單時,出現此錯誤:
Element LOC_MON is undefined in FORM
爲什麼元素未定義,即使我使用CFPARAM
標記設置了默認值?
如果我檢查MON盒子,它說Element LOC_TUE is undefined in FORM
,依此類推。
如果它只發生在週二,我會說這是因爲輸入元素的名稱與cfparam不匹配。 –
你應該在你的''標籤中確定你的表單變量的範圍(實際上,只是總是:總是對你的變量進行範圍)。如果 - 爲了參數的緣故 - 如果你已經有一個變量'variables.Loc_Mon',那麼你的無範圍''不會幫助你默認'form.Loc_Mon'。 –
感謝@AdamCameron,這是一個很好的觀點......它沒有解決問題,但我已經添加了最佳實踐。 –