0

我的问题是我有一个带有所见即所得编辑器的文本区域。

现在,当用户提交表单并且没有在该字段中输入任何内容时,这就是发布的内容: <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 回答