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>

Gl!

于 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

keepdataがあなたの友達であることを忘れないでください。事前にフォームフィールドに入力しておけば、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 に答える