2014-09-27 42 views
2

我是ColdFusion的新手。我正在嘗試做一些表單字段驗證。但是,如果form.nameform.address字段爲空,我的CFIF似乎不工作。ColdFusion 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> 

回答

15

如果存在字段您只能檢查。文本輸入字段將始終存在於提交的表單變量中,即使它們爲空。您還需要檢查字段值是不是空字符串。此外,您應該考慮使用StructKeyExists()而不是IsDefined(),因爲它更精確,在某些情況下性能更好。所以,你可以嘗試:

<cfif StructKeyExists(form, "name") AND Len(Trim(form.name))>

這將檢查「名」的表單字段的形式到達的範圍,並在該變量的值比其他的空間至少一個字符。

+0

由於Carl寫了使用** StructKeyExists **而不是IsDefined,只要你100%確定你在結構中尋找變量(幸運的是變量範圍是結構)。第一個函數僅在所提到的範圍內查找特定的鍵,而IsDefined將在所有範圍內查找它。 – PatNowak 2015-07-21 17:57:17

0

您也可以考慮使用Javascript或jQuery檢查空白字段或缺少輸入,在用戶離開頁面之前通知用戶有禮貌。

+0

是的。但是,問題是關於服務器端驗證(而不是客戶端)。所以上述是真正的評論,而不是一個答案。 (我意識到你不能[留下評論](http://stackoverflow.com/help/privileges/comment),只是FYI)。 – Leigh 2015-02-12 20:42:45

0

一個類似的替代卡爾的回答是

<cfif StructKeyExists(form, "name") AND Trim(form.name) NEQ ''>

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> 

小問題,但我從來沒有使用的形式。數據庫寫入以外的變量的一部分。

+0

這是非常慢我的朋友,我建議,當你想比較字符串使用LEN()或CompareNoCase(),當你有兩個字符串進行比較。 CompareNoCase使用HEGEX進行比較,速度如此之快! 我的最愛 – 2017-05-21 17:55:08