<!DOCTYPE html>
< html charset="utf-8">
< head>
< meta charset="utf-8">
< script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
< script type="text/javascript">
//for문에서 return false
function Frm_Chk( frm ) {
var frmCnt = frm.elements.length;
for ( i = 0 ; i <= frmCnt-1 ; i++ ) {
var cFrm = frm[i];
if ( !cFrm.value ) {
alert("값을 입력해 주세요.");
cFrm.focus();
return false;
}
}
alert("처리완료");
}
//each문에서 return false
$(function(){
$("#Frm_Chk2").click(function(){
$(".vchk").each(function(i){
if(!$(this).val()){
alert("값을 입력해 주세요.");
$(this).focus();
return false;
}
});
alert("처리완료");
});
});
< /script>
< /head>
< body>
<form name="wFrm">
<p><input type="text" name="test" class="vchk"></p>
<p><input type="text" name="test" class="vchk"></p>
<p><input type="text" name="test" class="vchk"></p>
<p><a style="cursor:pointer" onclick="Frm_Chk(wFrm)">for문_체크</a></p>
<p><a style="cursor:pointer" id="Frm_Chk2">each문_체크</a></p>
< /form>
</body>
< /html>
보시면 아시겠지만... for문에서는 값이 없으면 return false에서 끝나는데...
each문은 return false를 지나가는군요....
each문에서 return 값만으로 입력값 체크를 할수 있는 방법은 없을까요?
$("#Frm_Chk2").click(function(){
$(".vchk").each(function(i){
if(!$(this).val()){
alert("값을 입력해 주세요.");
$(this).focus();
chk = 0;
}
});
if(chk != 0){
alert("처리완료");
}
});
이런식의 처리 말고요...........................
[출처] jquery each에서 return false란|작성자 tlstjrdn03
답변 :
불가능합니다.
function 내에 들어있는 for 문 은 function 이 아니지만
function 내에 들어있는 each 문은 또다른 function 입니다.
each 에서 return false 는 break 과 같은 역할을 합니다
즉 each 함수를 빠져나갈 뿐입니다. 그러면 당연히 each 함수 뒤의 코드는
실행이 되죠.
의심가시면 http://james.padolsey.com/jquery/#v=1.10.2&fn=jQuery.each 에서
jquery core 소스를 보세요.
그렇기 때문에
http://stackoverflow.com/questions/4868931/breaking-parent-function-of-jquery-each-function
이와같이 처리해주셔야만합니다.
'JQUERY > 정보노하우' 카테고리의 다른 글
jQuery 강좌 - 기초 (0) | 2016.01.04 |
---|---|
jQuery & javascript 이벤트 (0) | 2015.10.15 |
jQuery 팝업 제어 (0) | 2015.10.15 |
[jQuery] append / appendTo - 문서 객체 속성 관련 (0) | 2015.10.13 |
JQUERY 핵심노트 (0) | 2014.09.05 |