0

私の問題は、wysiwygエディターを備えたテキスト領域があるfromがあることです。

これで、ユーザーがフォームを送信し、フィールドに何も入力しなかった場合、これが投稿されます。 <span class="sceditor-selection" style="line-height: 0; display: none;" id="sceditor-end-marker"></span><span class="sceditor-selection" style="line-height: 0; display: none;" id="sceditor-start-marker"></span><p><br></p>

ここで、フィールドを必須にし、フィールドが空かどうかを確認するための検証を行いたいのですが、エディターがそのhtmlに配置するため、実際に空になることはありません。

だから私はこのようなことをすることについて考えました:

<cfset searchfor = "&lt;span class=&quot;sceditor-selection&quot; style=&quot;line-height: 0; display: none;&quot; id=&quot;sceditor-end-marker&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sceditor-selection&quot; style=&quot;line-height: 0; display: none;&quot; id=&quot;sceditor-start-marker&quot;&gt;&lt;/span&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;">

    <cfif StructKeyExists(params.event, "summary_en")>
        <cfset 'params.event.summary_en' = Replace('params.event.summary_en', '#searchfor#', "", "All")>
    </cfif>

    <cfif params.event.summary_en eq "">
        ERROR
    <cfelse>
        PROCESS
    </cfif>

ただし、上記のコードでは、params.event.summary_enを ""または[空の文字列]に設定するのではなく、params.event.summary_enをparams.event.summary_en内に配置します。

したがって、何らかの理由で、上記の私のコードはこれを置き換えています:<span class="sceditor-selection" style="line-height: 0; display: none;" id="sceditor-end-marker"></span><span class="sceditor-selection" style="line-height: 0; display: none;" id="sceditor-start-marker"></span><p><br></p>

これとともに:params.event.summary_en

なぜこれが起こっているのか、そして私がこのフィールドの検証を正しい方法で行っているのかどうか、何か考えはありますか?

ありがとう。

4

3 に答える 3

1

以下のコードは、CF10,282462で「ERROR」を返します。使用しているCFのバージョンは何ですか?

<cfset params.event.summary_en = '<span class="sceditor-selection" style="line-height: 0; display: none;" id="sceditor-end-marker"></span><span class="sceditor-selection" style="line-height: 0; display: none;" id="sceditor-start-marker"></span><p><br></p>' />
<cfset searchfor = '<span class="sceditor-selection" style="line-height: 0; display: none;" id="sceditor-end-marker"></span><span class="sceditor-selection" style="line-height: 0; display: none;" id="sceditor-start-marker"></span><p><br></p>'>

<cfif StructKeyExists(params.event, "summary_en")>
    <cfset params.event.summary_en = Replace(params.event.summary_en,searchfor, "", "All")>
</cfif>

<cfif params.event.summary_en eq "">
    ERROR
<cfelse>
    PROCESS
</cfif>
于 2013-03-26T20:10:50.670 に答える
0

jsoupライブラリを使用する場合

<cfset jsoup = CreateObject("java", "org.jsoup.Jsoup")>
<cfset whitelist = CreateObject("java", "org.jsoup.safety.Whitelist")>

<cfset params.event.summary_en = '<span class="sceditor-selection" style="line-height: 0; display: none;" id="sceditor-end-marker"></span><span class="sceditor-selection" style="line-height: 0; display: none;" id="sceditor-start-marker"></span><p><br></p>'>

<cfset safeString = Jsoup.clean(params.event.summary_en, whitelist.none())>

<cfif Len(Trim(safeString))>
    PROCESS
<cfelse>
    ERROR
</cfif>

whitelist.none()すべてのタグが文字列から削除されていることを確認するためだけに使用しています。

于 2013-03-27T09:43:01.007 に答える
0

異なる引用符に出入りする大きな文字列があり、それらをエスケープしたくない場合は、いつでもcfsavecontentを使用して文字列を保存できます。

<cfSaveContent var = "params.event.summary_en">
<span class="sceditor-selection" style="line-height: 0; display: none;" id="sceditor-end-marker"></span><span class="sceditor-selection" style="line-height: 0; display: none;" id="sceditor-start-marker"></span><p><br></p>
</cfSaveContent>

いくつかのニュアンスに注意する必要があります。たとえば、上記のコードは文字列の正確なコピーと一致するように機能しますが、フォーマット用の空白が追加されているため、以下の文字列はおそらく一致しません。ただし、値を保存して別の場所に出力するだけであれば、それでもうまく機能します。

<cfSaveContent var = "params.event.summary_en">
    <span class="sceditor-selection" style="line-height: 0; display: none;" id="sceditor-end-marker"></span>
    <span class="sceditor-selection" style="line-height: 0; display: none;" id="sceditor-start-marker"></span>
    <p>
        <br>
    </p>
</cfSaveContent>

記録のために、文字列内で含まれている引用符と同じ引用符を使用できますが、それは醜いです。

<cfset x = "<img src = ""yourImage.jpg"" class = ""yourClass"">">
于 2013-03-27T10:29:27.767 に答える