2014-09-27 3 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

필드가 존재하는 경우에만 확인됩니다

여기 내 코드입니다. 텍스트 입력 필드는 제출 된 양식 변수가 비어 있더라도 항상 존재합니다. 필드 값이 빈 문자열이 아닌지 여부도 확인해야합니다. 또한 IsDefined() 대신 StructKeyExists()를 사용하는 것이 더 정확하고 경우에 따라 더 잘 수행되기 때문에 고려해야합니다. 그래서 당신은 시도해 볼 수도 있습니다 : "이름"양식 필드가 FORM 범위에 도착하면

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

이 확인되고, 그 변수의 값은 공백 이외의 적어도 하나 개의 문자입니다.

+0

Carl은 IsDefined 대신 ** StructKeyExists **를 사용했습니다. 구조체에서 변수를 찾으려면 100 % 확신해야합니다 (다행스럽게도 변수 범위는 구조체입니다). 첫 번째 함수는 언급 된 범위에서만 특정 키를 찾습니다. 반면 IsDefined는 모든 범위에서 해당 키를 찾습니다. – PatNowak

0

빈 필드 또는 Javascript 또는 jQuery를 사용하여 누락 된 입력을 확인하고 페이지를 떠나기 전에 사용자에게 알리는 것이 예의라고 간주 할 수 있습니다.

+0

참. 그러나 질문은 서버 측 유효성 검사 (클라이언트가 아님)에 관한 것입니다. 따라서 위의 내용은 답변이 아니라 주석입니다. (나는 당신이 [아직 코멘트를 남길 수 없다는 것을 깨닫는다] (http://stackoverflow.com/help/privileges/comment), 단지 FYI 참조). – Leigh

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를 사용하여 비교하기가 매우 빠릅니다! 내 베스트 –