3

ユーザーがフォームに入力するために名前と名前を入力できるフィールドがあります。時々、ユーザーは自分の名を付けて、それが私のデータベースの空のフィールドになります。このフォームはより大きなプロジェクトの一部であり、私の会社の他のWebサイトで使用されているため、この方法を完全に変更することはできません。

これは、コードの周りで検証が必要な部分です。フィールドが空でないことを確認する検証はすでにありますが、フィールドにスペースで区切られた2つの項目があることを確認するためにさらに必要です。

<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'は、フォームがすでに送信されているかどうかをチェックして、ユーザーがデータを2回送信していることを確認します。

正規表現を使用してそれを行うことを考えましたが、残念ながら、CF9での正規表現の使用方法とオンラインのドキュメントについては少し詳しくありません。

「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 に答える