在表单内设置表单变量(coldfusion)

时间:2013-01-11 14:59:45

标签: coldfusion coldfusion-9

我正在尝试手动设置一个变量INSIDE表单,因为它包含html并将其放在标签的value属性中会导致显示错误。目前,我检查该属性是否包含html,如果是,则该字段为空。

如果它在表单的先前条目中包含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抛出一个错误,说FORM变量是未定义的(这并不让我感到惊讶)。 “savefield”按钮调用javascript打开一个窗口,允许用户设置值,然后关闭。我应该把代码放在那里吗?

- 将字符串转换为注释的插入是早期尝试解决方法的问题:/

3 个答案:

答案 0 :(得分:3)

好的希望以下指示可以帮助您:

  • 验证表单中是否存在该字段; structKeyExists(form,“field”)或使用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>

Gl!

答案 1 :(得分:2)

如果您想在使用cfparam之前强制将某个值放入表单(或任何)范围内。

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

基本上这和

是一回事
<cfif !structKeyExists(form,"field")>
  <cfset form.field = "">
</cfif>

答案 2 :(得分:0)

不要忘记保存的是你的朋友。 如果提前填充表单字段,则不必担心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>