我是ColdFusion的新手。我正在尝试进行一些表单字段验证。但是,如果form.name
和form.address
字段为空,我的CFIF似乎无法正常工作。
这是我的代码:
<cfif IsDefined("form.name")>
<cfif IsDefined("form.address")>
Your shipping address is:<br>
<cfoutput>
#form.name#<br>
#form.address#<br>
#form.state#<br>
#form.shipping#<br>
#form.brochure#<br>
</cfoutput>
<cfelse>
You did not enter an address.
</cfif>
<cfelse>
You did not enter a name.
</cfif>
答案 0 :(得分:15)
您只是检查字段是否存在。文本输入字段将始终存在于提交的表单变量中,即使它们为空。您还需要检查字段值是否为空字符串。此外,您应该考虑使用StructKeyExists()而不是IsDefined(),因为它更精确,在某些情况下表现更好。所以你可以试试:
<cfif StructKeyExists(form, "name") AND Len(Trim(form.name))>
这将检查“名称”表单字段是否到达FORM范围,并且该变量中的值是否至少是空格以外的一个字符。
答案 1 :(得分:0)
您也可以考虑使用Javascript或jQuery检查空白字段或缺少输入,在用户离开页面之前通知用户是有礼貌的。
答案 2 :(得分:0)
与Carl的答案类似的替代方案是
<cfif StructKeyExists(form, "name") AND Trim(form.name) NEQ ''>
答案 3 :(得分:0)
我认为,如果您提交的表单必须存在,那么检查是否存在这些字段是不必要的。
<cfif (form.name IS "") OR (form.address IS "")>
We need your name and address to ship your item(s).
<cfelse>
Your shipping address is:<br>
<cfoutput>
#form.name#<br>
#form.address#<br>
#form.state#<br>
#form.shipping#<br>
#form.brochure#<br>
</cfoutput>
</cfif>
小问题,但我从未使用过表格。变量的一部分,除了数据库写入。