2014-05-12 1 views
0

데이터를 제출하기 전에 유효성 검사 스크립트가있는 양식을 작성 중입니다.요소의 색상을 기반으로 양식의 유효성을 검사하는 것이 좋습니다.

기본적으로 모든 입력 필드에는 'onchange'이벤트에 의해 트리거 된 입력 내용이 올바른지 테스트 할 수있는 함수가 있습니다. 내용이 '유효하지 않은'경우 함수는 해당 입력 필드의 배경을 빨간색으로 설정합니다.

function looseColorQty(t) 
    { 
    var n = t.value; 
    if(isNaN(n) == true || n < 0){ 
     t.style.backgroundColor="red";  
    } else { 
     t.style.backgroundColor=""; 
     } 
    } 

그런 다음 사용자가 버튼을 클릭 '제출'할 때,이 양식은 입력 필드 중 하나가 '빨간색'인 경우 기반으로 제출 할 수 있는지 확인하기 위해 다른 스크립트가있다.

var canNotSubmit = 0; 
function checkError(){ 
    var fieldsToCheck = document.getElementsByTagName("input"); 
    var fieldsQty = fieldsToCheck.length; 

    for(var i=0; i<fieldsQty; i++){ 
     var checkTarget = fieldsToCheck[i].style.backgroundColor; 

      if(checkTarget == "red"){ 
      document.getElementById("tips").className = "tipError"; 
      document.getElementById("tips").innerHTML = "Please correct all RED fields before you submit."; 
      canNotSubmit = 1; 
      return; 
     } 
     } 
     } 

실제로 작동하지만이 유효성 검사가 색상을 기반으로한다는 이상한 느낌이 들었습니다. 나는 점을 찍어서 어떤 결점이 있는지 알고 싶다.

+0

붉은 색은 아무 의미가 있기 때문에 모범 사례는 아닙니다. 'checkError()'를 사용하는 것이 두 가지 일을하는 것이 더 낫습니다. 1. 요소에 빨간색을 표시해야합니다. 2. 루프에서 numErrors (오류가 발견 될 때마다 카운트하는 새 변수)를 추적해야합니다). 그런 다음'numErrors'를 사용하여 양식이 유효한 지 여부를 결정해야합니다. 미묘한 차이점이 있지만, 나중에 애플리케이션을 더 쉽게 유지할 수 있습니다. –

+0

서버 측 유효성 검사가 유효하다면 믿을 수 있습니다. 단지 위조 방지를 위해 사용자가 – Luke

답변

2

나는 이것이 좋은 생각이 아니라고 생각합니다.

대신 HTML5 필드 유효성 검사를 사용하지 않는 경우 필드의 속성을 첨부 (또는 변경)합니다. 예를 들어 대신 data-validation="invalid" 특성을 첨부 한 다음 CSS를 스타일 빨간색 배경으로 사용하십시오.

시맨틱 (의미)에 관한 기본 사항은 외관상의 것이 아닙니다.

그런 다음 onsubmit 처리기는 data-validation="invalid" 필드를 확인하고 해당 필드를 기반으로 메시지를 발행 할 수 있습니다. 데이터가 항상 클라이언트 유효성 검사를 통과 한 후 무단으로 변경 될 수있다 -

는 클라이언트 측 유효성 검사를 신뢰할 수 없기 때문에 항상, 제출 후 서버에 다시을 확인 하는 것을 잊지 마십시오.

+1

+1 양식을 사용하여 기본 유효성 검사 방법으로 서버 측 유효성 검사를 사용할 수 없도록하십시오. 클라이언트쪽에 넣은 유효성 검사는 사용자에게만 편리합니다. 클라이언트가 '검증 된'데이터를 신뢰하지 마십시오. – WillardSolutions

+0

@ChrisWillard - 그리고 "사용자에게 편리함"을 위해 +1, 그것은 내가 항상 사용하는 정확한 문구입니다. –

+0

스티븐 P.에게 감사의 말을 전합니다. 속성을 추가함으로써 검증 작업을 훨씬 쉽게 할 수 있습니다. 그리고 확실히 서버 측에도 유효성 검증을 쓸 것입니다. –

0

요소에 클래스 이름을 추가합니다. value-is-invalid처럼 클래스 classname 요소에이 클래스가 포함되어 있는지 확인할 수 있습니다. background-color: red;을 CSS 파일에서이 클래스로 이동할 수도 있습니다. 따라서 논리에서 스타일을 분리하고 나중에 스타일을 더 쉽게 변경할 수 있습니다.

등 :

.value-is-invalid { 
    background-color: red; 
} 

스티븐 P는 클라이언트 측 유효성 검사에 의존 할 수 없습니다 지적. 항상 서버 측에서도 유효성을 검사합니다.

관련 문제