3

我有一个字段,用户可以输入名字和姓氏来填写我的表格。有时,用户输入他们的名字,这会导致我的数据库中出现空字段。请记住,我无法完全更改此方法,因为此表单是更大项目的一部分,并且正在被我公司的其他网站使用。

这是我需要围绕它进行验证的代码部分。我已经有一个验证,以确保该字段不为空,但我需要更多以确保该字段中有两个项目,由空格分隔。

<input name="fullname" class="fullname"   type="text" value="#fullname#" maxlength="150"/>
            <cfif fullname eq '' and check2 eq 'check2'>
            <br /><span style="color:red">*you must enter your full name</span></cfif>

check2 eq 'check2' 正在检查表单是否已经提交,以确保用户提交他们的数据两次。

我曾想过使用正则表达式来做到这一点,但不幸的是,我对如何在 CF9 中使用 regx 以及通过我在线阅读的文档不太熟悉。

我也在考虑使用“Find”或“FindOneOF”,对此有什么想法吗?

另外,我尽量避免使用 JQ、JS 等,所以如果可能的话,请尽量保留基于 CF 代码的建议。

任何有关如何解决此问题的帮助或不同建议将不胜感激。

4

2 回答 2

4

为此不需要正则表达式。一个稍微简单的解决方案:

<cfset form.fullname = "Dave " />
<cfif listLen(form.fullname," ") GT 1> <!--- space-delimited list, no need for trimming or anything --->
   <!--- name has more than one 'piece' -- is good --->
<cfelse>
   <!--- name has only one 'piece' -- bad --->
</cfif>
于 2012-05-18T20:41:17.363 回答
1

你可以为服务器端验证做这样的事情:

<cfscript>
TheString = "ronger ddd";
TheString = trim(TheString); // get rid of beginning and ending spaces
SpaceAt = reFind(" ", TheString); // find the index of a space

// no space found -- one word
if (SpaceAt == 0) {
    FullNameHasSpace = false;
// at least one space was found -- more than one word
} else {
    FullNameHasSpace = true;
}
</cfscript>

<cfoutput>
<input type="input" value="#TheString#">
<cfif FullNameHasSpace eq true>
    <p>found space at position #SpaceAt#</p>    
    <p>Your data is good.</p>
<cfelse>
    <p>Did not find a space.</p>
    <p>Your data is bad.</p>
</cfif>
</cfoutput>
于 2012-05-11T15:19:54.687 回答