2012-04-11 4 views
0

javascript 개체 값을 사용하여 간단한 양식 유효성 검사를 수행하려고합니다. 나는 그것이 "이상적"이 아니라는 것을 압니다. 그러나 저는 철저하게 입을 필요가없는 간단한 형태로 작업하고 있습니다. 나는 각 양식 필드에 값이 있는지 확인하려고 http://jsfiddle.net/6dXd7/3/javascript 개체로 양식 필드의 유효성을 검사하는 방법은 무엇입니까?

:

내 바이올린 예를 참조하십시오. 그렇다면 myObj.fieldID의 값을 yes으로 설정하십시오.

그런 다음 양식이 제출되면 모든 기존 myObj.XXX을 확인하고 모든 값이 yes인지 확인하십시오.

예를 들어, 개체를 만드는 데 문제가 있습니다. 각 개체를 이름으로 지정하지 않고 제출 단추를 누르면 모든 개체를 순환하는 방법을 모르겠습니다.

다음은 위의 링크 된 jsfiddle 예제의 코드입니다 :

<script> 
$(document).ready(function() { 
    var myObj = {}; 
    $("input.checkblank").blur(function() { 
     var inputID = $(this).attr("id"); 
     var contents = $("input#" + inputID).val(); 
     if (contents == "") { 
      $(myObj).data(inputID, "no"); 
     } else { 
      $(myObj).data(inputID, "yes"); 
     } 
    }); 
    $("#verify").click(function() { 
     if (myObj.first && myObj.second == "yes") { 
      // ***** Trying to get it to scan through ALL existing myObj's and make sure all their values are "yes" *****   
      $('.results').text('all good'); 
     } else { 
      $('.results').text('not good'); 
     } 
    }); 
}); 
</script> 

<input type="text" name="first" id="first" class="checkblank"><br /> 
<input type="text" name="second" id="second" class="checkblank"> 
<a href="#" id="verify">check</a><br /> 
<p class="results"> </p> 

+3

[jQuery 유효성 검사 플러그인] (http://bassistance.de/jquery-plugins/jquery-plugin-validation/)을 사용하지 않는 이유는 무엇입니까? – Sparky

+1

일반 객체에서 jQuery.data()를 사용하는 이유는 무엇입니까? 이 방법은 데이터를 DOM 요소에 'data-attr'값으로 첨부하는 데 사용됩니다. – Mathletics

+1

jsFiddle은 코드를 시연하는 데 적합하지만 링크에 죽은 후에도이 질문을 유용하게 사용할 수 있도록 코드를 게시물에 넣으십시오. – Sparky

답변

1

당신은 jQuery를 데이터 필드의 정보를 저장하고 같은 장소에 나중에하지를 확인하기 위해 노력하고 있었다 .. .

var obj = {} 
$(obj).data('a','1'); 
console.log(obj.a); //this will log null, cause there's no attribute 'a' in 'obj' 
console.log($(obj).data('a')); //this will log '1' :] 

대신 이렇게,이 같은 기본 객체의 속성에 당신에게 데이터를 저장해야합니다

var obj = {} 
obj['a'] = '1'; //obj.a = '1' work's too 
console.log(obj.a); //now it log '1' :] 

또한, 귀하의 검증 기능은 second이 존재하고 "yes" 동일한 경우 firstmyObj 내부에 존재하는 경우에만 확인 ... 잘못된 것입니다. ] http://jsfiddle.net/6dXd7/5/

: 여기
$("#verify").click(function() { 
    var allFieldsOK = false; 
    for (var field in checkedFields) { 
     if (!(allFieldsOK = checkedFields[field])) break; 
    } 
    $('.results').text( allFieldsOK ? 'all good' : 'not good'); 
}); 

이 당신의 목적을 위해 노력하고 클래스 checkblank 더 입력 필드를 추가 할 경우 작동합니다, 당신에게 jsFiddle 업데이트입니다 : 그래서 당신의 검증 기능은 다음과 같이해야한다
+1

전체 답변을 보려면 jsFiddle에만 의존하지 마십시오. 링크가 끊어지면 답이 불완전 해집니다. – Sparky

+0

감사합니다. 나는 당신의 것을 약간 조정했지만 근본적으로 사용했습니다. 잘 작동합니다. – JROB

+1

@ Sparky672 thx, jsFiddle없이 유용하게 유지하기 위해 제 질문을 수정했습니다 : D –

0

$("#verify").click(function() { 
    var flag=true; 
    $('.checkblank').each(function(){ //check all elements with class checkblank 
     if($(this).val().length==0)  //set flag false if anyone of them is blank 
      flag=false;     
    }) 
    if (flag) { 
      $('.results').text('all good');  
     } else { 
      $('.results').text('not good'); 
     } 
}); 

$("#verify").click(.........}); 

교체

... 작동해야합니다.

관련 문제