2017-06-08 6 views
-1

ユーザーが特定のフォームを送信したときの検証方法に関する最良の方法を考え出すのに問題があります。ユーザーに応じて、州のある地域または国全体を編集することができます。だから私は彼らの州のすべてのために彼らが地域配分(各列)と同じであることを確認する必要があります。ユーザーが全国アクセス権を持っている場合は、すべての地域が全国の合計に合致することを確認する必要があります。フォームの検証 - 動的テーブル内のさまざまな行の合計

私はHTMLとColdfusionでコーディングしていますが、検証のためにjavascriptを使用している場合は問題ありません。結果は動的なので、クエリが動的なので、検証のハードコードをしたくないです。場合によっては、3-13の行のすべてが行1と等しくなり、3-12は行2と等しくなります。場合によっては、行2-7は行1と等しくなければならない場合もあります。

私のフォームの表示コードです。どんな助けでも大歓迎です。

<cfloop index="i" from="1" to="#getdata.recordcount#"> 
<tr id="editrow#i#" style="background-color:##f0f0f0"> 
    <td>#getdata.location[i]#</td> 
    <td><input type="text" class="form-control" id="initial#i#" name="initial#i#" value="#numberFormat(getdata.initial[i],'9,999')#"></td> 
    <td><input type="text" class="form-control" id="recon#i#" name="recon#i#" value="#numberFormat(getdata.recon[i],'9,999')#"></td> 
    <td><input type="text" class="form-control" id="cdr#i#" name="cdr#i#" value="#numberFormat(getdata.cdr[i],'9,999')#"></td> 
    <td><input type="text" class="form-control" id="other#i#" name="other#i#" value="#numberFormat(getdata.cdr[i],'9,999')#"></td> 
</tr> 
</cfloop> 
+0

数字を入力する場合、アプリケーションのビジネスルールに従っていない場合は、javascriptを使用して送信ボタンを削除します。また、ユーザーに表示される内容のみを表示します。 –

+0

彼らは何が許されているのか見ているだけです。私の質問は、合計金額に等しいことを確認するために金額を検証する方法です。ありがとう – singular

答えて

0

フォームにrecordCountという名前の隠しフィールドを含めます。次に、アクションページのフォームを次のように検証することができます。

<cfset recordCount = form.recordCount> 

<cfset validationValInitial = 0> 
<cfset validationValRecon = 0> 
<cfset validationValCDR = 0> 
<cfset validationValOther = 0> 

<cfloop list="#form.fieldnames#" index="fieldname"> 
    <!--- Use first 3 letters to identify each category of fields ---> 
    <cfswitch expression="#left(fieldname,3)#"> 
     <cfcase value="ini"><!--- initial1, initial2, ... ---> 
      <cfloop from="1" to="#recordCount#" index="rowNo"> 
       <cfif rowNo GTE 3 and rowNo LTE 13> 
        <cfset validationValInitial = validationValInitial + form['initial' & rowNo]> 
       </cfif> 
      </cfloop> 
     </cfcase> 
     <cfcase value="rec"><!--- recon1, recon2, ... ---> 

     </cfcase> 
     <cfcase value="cdr"><!--- cdr1, cdr2, ... ---> 

     </cfcase> 
     <cfcase value="oth"><!---other1, other2, ... ---> 

     </cfcase> 
    </cfswitch> 
</cfloop> 

/* 
Here, I have assumed that the validation rule for the fields initial1, initial2, ... is that the sum of the values in rows 3 to 13 equals the value in row 1. Use this as an example, and work out the rest. 
*/ 

<cfif validationValInitial EQ form.initial1> 
<!--- valid ---> 
<cfelse> 
</cfif> 
関連する問題