3

我正在尝试在表单内手动设置一个变量,因为它包含 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 变量未定义(这并不让我感到惊讶)。“保存字段”按钮调用 javascript 打开一个允许用户设置值的窗口,然后关闭。我应该把我的代码放在那里吗?

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

4

3 回答 3

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>

格!

于 2013-01-11T15:18:47.300 回答
2

如果你想强制一个值进入表单(或任何)范围,你需要在使用它之前使用cfparam 。

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

本质上,这与

<cfif !structKeyExists(form,"field")>
  <cfset form.field = "">
</cfif>
于 2013-01-11T15:29:45.243 回答
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>
于 2013-01-13T18:44:17.450 回答