2016-03-16 174 views
1

我的表單上有5個文本框(cfinput)用於輸入組織代碼。我想要做的是,當用戶鍵入組織代碼時,應該有一個onkeyup函數,它將驗證數據庫中所有值的值,如果它無效,它應該顯示「無效代碼」。 我已經獲得了名爲OrgIndexArray的所有組織代碼。我沒有收到,我會怎麼做這所有的5個文本框(某種cfloop?)將輸入值與數據庫中的值進行比較coldfusion

<cfquery name="getOrgCodes" datasource="#sqlDS#"> 
    select distinct OrgCode From #SAUserIndex# 
</cfquery> 

<cfset IndexCodesList = ValueList(getOrgCodes.OrgCode)> 
<cfset IndexCodesArray = #ListToArray(IndexCodesList)#> 

<script> 
    var IndexArray=<cfoutput>#SerializeJSON(getOrgCodes,true)# </cfoutput> 
    $(document).ready(fucntion() { 
     $('.IndexCodes').on('keyup',function(){ 
      if(!!~jQuery.inArray($this.val(),IndexArray)) { 
       document.getElementById("message").innerHTML="Invalid Index"; 
      } 
     }); 
    }); 
</script> 
+0

當你說你有一個數組中的值,這是一個Coldfusion數組?或一個JavaScript數組? – JanR

+0

@JanR它是一個coldfusion數組。 – Jatin

+0

這5個文本框各佔一個字符嗎?如果沒有,使用onkeyup觸發js函數可能有點不明智。接下來,如果您擁有CF數組中的所有代碼,則可以使用toScript函數將該數組轉換爲JS數組。最後,如果你正在獲得所有可用的代碼,爲什麼不使用選擇控件而不是文本框? –

回答

1

問題目前是所有的「驗證」數據僅提供服務器端。理想情況下,您希望使用JavaScript作爲用戶類型在表單字段上進行驗證。通過這種方式,您可以在不需要對服務器進行額外調用的情況下執行驗證客戶端。

有達到你想要做的幾個方法:

一個(可能有點哈克)的方式做,這是使用的ColdFusion在你的頁面來填充JavaScript數組:

<script> 
    var myArray = <cfoutput>#serializeJson(OrgIndexArray)#</cfoutput>; 

    //use javascript to validate the input by checking the cfinput value with the array. 
    //assuming you have jquery: 
    $(document).ready(function(){ 
     $('.classOfYourInputHere').on('keyup',function(){ 
      if ($.inArray($this.val(), arr)) 
      { 
       //do something 
      } 
     }); 
    }); 

</script> 

或者,您可以創建一個API排序,這將允許您做一個Ajax請求到一個Coldfusion .cfc檢索JavaScript中的數組數據,然後你會繼續類似於上述。

請注意,這是未經測試無論如何,但它希望應該幫助你在正確的方向。

相關問題