2013-01-11 60 views
3

我試圖手動設置一個變量INSIDE窗體,因爲它包含html並將其放置在標記的value屬性中會導致顯示錯誤。目前,我檢查該屬性是否包含html,如果是,則該字段爲空。在窗體內設置窗體變量(coldfusion)

我希望能夠將變量設置爲舊值,如果它在表單的以前的條目中包含html,以便用戶在每次將該ORM對象加載到該對象時都不必輸入該字段編輯。

這裏有一個片段:

<cfif ("#dataobject.getField()#" NEQ "" AND Left(dataobject.getField(), 1) EQ "<")> 
<cfscript> 
    temp = dataobject.getField(); 
    temp2=temp; 
    temp2 = Insert("---", temp2, 0); 
    temp2 = Insert("<!", temp2, 0); 
    temp2 = Insert("--->", temp2, Len(temp2)); 
    dataobject.setField(temp2);        
</cfscript> 

<label for="name"> 
    Field: 
</label> 
<input type="text" name="Field" value=""> 
<button id="savefield" name="savefield">Save</button> 
<cfif form.Field EQ ""><cfset form.Field = temp></cfif> 
<cfscript> 
    dataobject.setField(temp); 
</cfscript> 

<cfelse> 
<label for="name"> 
    Field: 
</label> 
<input type="text" name="Field" <cfif ("#dataobject.getField()#" NEQ "")>value="#dataobject.getField()#"</cfif>> 
<button id="savefield" name="savefield">Save</button> 
</cfif> 

的代碼我試圖用: <cfif form.Field EQ ""><cfset form.Field = temp></cfif>

ColdFusion的拋出一個錯誤,指出該表單變量是不確定的(這並不讓我感到吃驚)。 「savefield」按鈕調用javascript,打開一個窗口,允許用戶設置值,然後關閉。我應該把代碼放在那裏嗎?

這把串入評論

-The刀片是在一個解決方法的早期嘗試,沒有工作:/

回答

3

好希望下面的指針將幫助你去:

  • 驗證該字段以形式via存在; structKeyExists(形式,「場」),或使用cfparam初始化爲默認值
  • 逃生用HTMLEditFormat的值(dataObject.getField())逸出打破了HTML任何HTML代碼

所以例如;

<cfparam name="form.field" default="" /> 

<label for="field"> 
    Field: 
</label> 
<input type="text" id="field" name="field" value="#htmlEditFormat(form.field)#" /> 
<button id="savefield" name="savefield">Save</button> 

G1!

+0

當我提交表單時,會使用HTMLEditFormat()分解代碼嗎?我希望它可以恢復....或者它只是對它進行編碼(我可以稍後撤消)?我不想剝去HTML,儘管如果有必要,我可能會手動添加它。 – user1970309

+0

HTMLEditFormat()例程從通常會破壞表單的字段中轉移實體,並將該字段與其中的轉義HTML實體一起發佈。 – Marius

+1

'xmlFormat()'實際上陷阱更多,很多人通過'htmlEditFormat()'使用它' – Travis

2

如果您想在您使用之前將值強制到您想要使用的形式(或任何)範圍cfparam

<cfparam name = "form.field" default = ""> 
<cfif form.Field EQ ""> 
    <cfset form.Field = temp> 
</cfif> 

本質上講,這是一回事

<cfif !structKeyExists(form,"field")> 
    <cfset form.field = ""> 
</cfif> 
0

不要忘記,preservedata是你的朋友。 如果您提前填充表單域,則不必擔心value =「」屬性。

<cfquery name="qry"> 
SELECT Field1,Field2 
FROM table 
WHERE ID=<cfqueryparam cfsqltype="cf_sql_integer" value="#url.ID#"> 
</cfquery> 

<cfloop list="#qry.Columnlist#" index="FieldName"> 
    <cfset form[FieldName] = HTMLEditFormat(qry[FieldName][1])> 
</cfloop> 

<cfform preservedata="yes"> 
    <label for="Field1">Field One:</label> 
    <cfinput name="Field1"> 
    <label for="Field2">Field Two:</label> 
    <cfinput name="Field2"> 
</cfform>