我的问题是我有一个带有wysiwyg编辑器的文本区域。
现在,当用户提交表单并且没有在字段中输入任何内容时,这就是发布的内容:<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 = "<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>
但是,上面的代码并没有像我想要的那样将params.event.summary_en设置为“”或[empty string],而是将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
知道为什么会发生这种情况,以及我是否正确地以正确的方式对该领域进行验证?
感谢。
答案 0 :(得分: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>
答案 1 :(得分: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()
来确保从字符串中删除所有标记。
答案 2 :(得分: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"">">