첫번째의 경우

 

$(document).ready(function(){
 ...

});

-> window.onload = function() {}과 같은 기능

 

두번째의 경우

 

$(function(){
  ..

});
 

그냥 함수를 실행하라는 의미 입니다.

 

세번째의 경우

 

(function($){


})(jQuery);

 

이경우는 Jquery를 사용할 때, $ 달러의 의미를 jquery에서 사용하겠다는 의미가 내포되어 있습니다.

즉, $를 jquery만 사용하는 것이 아니라 다른 라이브러리에서도 사용할 수 있기 때문이에요.

만약 prototype.js 랑 jquery를 같이 사용하는 경우에는  $가 충돌이 발생하는 것입니다.

 

그래서 아예..

함수로 $를 매개변수로 해서 넘기는 것입니다.

jQuery 이것이 jquery 객체이지요.

저 함수안에서 $의 의미는 jquery 객체로 사용이 되는 것이에요..

 

prototype.js 와 jquery로 프로그래밍을 함께 병행하실 때는..

(function($){

...

..

..

   이 안에서만 jquery를 자유롭게 사용하게 됩니다.

...
})(jQuery);

 

 

출처 : 네이버지식인


===================================================================================


내가 이런 문법을 찾았던 이유는 jquery 때문은 아니었고

 

현대자동차 기업문화홍보 사이트의 소스를 보다가 처음보는 문장을 발견해서 찾기 시작했다..

 

여기서 나온 스크립트가 이것이었다..


        (function (w) {
            // version check
            var ua = window.navigator.userAgent;
            var msie = ua.indexOf("MSIE ");

            if (msie > 0 && parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)), 10) < 7) {
                location.href = '/pages/common/NoticeIE6.aspx';
            }
        })(window);


 

첨엔 이게 뭔가 싶었다...

 

그러다가 jquery 플러그인 소스에서 이런 비슷한걸 보았던것 같아 책을 보았고

 

플러그인 파트에서 아래와 같은 문장을 찾게 되었다.


 (function($){
  //
  // 여기에 플러그인을 정의한다
  //
 })(jQuery);

 

 $라는 매개변수를 정의한 함수에 jQuery를 전달하면 $는 함수안에서 jQuery의 참조임이 보장된다. 

$는 jquery의 별칭이라고 한다. 

  '왜 이렇게 되었는지는 별로 생각하고 써본적이 없었는데

  jQuery를 $ 로 정의한 함수에 전달하기 때문에 $가 jquery의 별칭이 될수 있지 않나...'

  라는 생각을 해본다.ㅋ

이를통해 플러그인을 정의할 때 핵심 내용을 작성하는데 $를 사용할 수 있다.


물론 현대차 홍보페이지의 소스랑은 다르지만 이것과 비슷한 의미리라 생각한다.ㅋ

 

좋은 가르침이었다ㅋ

 

내가 이해한게 제대로 된건가.. 싶다..ㅋㅋ


출처 - http://www.cyworld.com/_NextWorld_/7222534







'Development > jQuery' 카테고리의 다른 글

jQuery - URL을 파싱  (0) 2012.05.29
jQuery - 플러그인 모음  (0) 2012.05.29
jQuery - Url Parameter 추출  (0) 2012.05.29
jQuery - form 데이터 유효성 검사  (0) 2012.05.23
Eclipse Aptana Plugin 설치  (0) 2012.05.21
Posted by linuxism
,


jQuery 입문: form 데이터 유효성 검사.

본문 건너 뛰기

사용자가 form 안에서 올바른 값을 입력했는지 여부(데이터 유효성)는 기본적으로 서버측 스크립트로 확인해야 합니다. 사용자가 입력한 form을 서버로 전송하면 서버측 스크립트는 사용자 값을 받아서 맞는지 틀린지 확인하고 틀린 경우 다시 입력 페이지를 내놓습니다. 이 과정의 문제는 서버측 스크립트로부터 데이터 유효성 검사를 받으려면 네트웍 환경이 좋지 못한 환경에서 너무 오랜 시간을 기다려야한다는 점입니다. 사실 네트웍 환경이 좋아도 같은 페이지를 자꾸 갱신하는 것은 짜증스러운 일이죠. form이 포함된 페이지를 아무런 실수 없이 한번에 유효하게 작성해서 전송 OK! 하는 사람들이 얼마나 많을까요?

그래서 웹 개발자는 언제부터인가 이런 불편을 개선할 목적으로 데이터 유효성 확인과 같은 핵심 기능을 자바스크립트에 의존하기 시작했습니다. 데이터 유효성 검사를 자바스크립트로 처리하면 서버에 한번 다녀오지 않아도 데이터 유효성 확인이 가능하기 때문에 잘못된 데이터를 페이지 갱신 없이 즉석에서 정정할 수 있습니다. 자바스크립트에 의존한 것은 창의적으로 UX를 개선한 일로써 전혀 문제가 되지 않는데요. 문제는 자바스크립트에만 의존하는 것입니다. 개발자가 작성한 자바스크립트 가운데 전부 또는 일부를 해석하지 못하는 브라우저는 현재도 존재하고 앞으로도 존재할지 모릅니다. 대중적인 브라우저만 지원하면 그만이라는 생각은 학생증이 있는 청소년에게만 책을 빌려주는 도서관 운영 방침과 같은 겁니다.

자바스크립트를 지원하는 환경에서는 자바스크립트에 의존하여 사용성(만족, 효율)을 높이고, 자바스크립트를 지원하지 않는 환경에서는 HTML, CSS, 서버측 스크립트에 의존하도록 양쪽 방향을 모두 고려하여 설계함으로써 상호 운용성(JS 지원 여무에 무관한 운용성)을 확보할 수 있습니다. 이런 설계 기법을 겸손한 자바스크립트(Unobtrusive Javasript)라고 합니다. 겸손한 자바스크립트 관련글 하나겸손한 자바스크립트 관련글 둘. 이런 개념을 탑재하고 나서 자바스크립트 실력을 향상시켜도 늦지 않습니다.

오늘의 주제는 jQuery를 이용한 데이터 유효성 검사 입니다. 서버측 유효성 검사 방법은 다루지 않겠지만 서버측 스크립트에 의한 데이터 유효성 검사 또한 진행할 것이라는 전제 아래 자바스크립트로 데이터 유효성 검사 기능을 구현해 봤습니다.

데이터 유효성 검사 예제 미리보기 

(*) 항목은 반드시 입력해 주세요.


  •  영문, 숫자, 언더스코어(_), 하이픈(-)이 포함 3~16 문자.

  •  영문, 숫자, 언더스코어(_), 하이픈(-) 포함 6~18 문자.



  •  하이픈(-)은 입력하지 마세요.

데이터 유효성 검사 예제 코드

<form action="" class="form">
	<p>(*) 항목은 반드시 입력해 주세요.</p>
	<ul>
		<li>
			<label for="uid">ID(*):</label>
			<input id="uid" />
			영문, 숫자, 언더스코어(_), 하이픈(-)이 포함된 3~16 문자.
		</li>
		<li>
			<label for="upw">PW(*):</label>
			<input id="upw" type="password" />
			영문, 숫자, 언더스코어(_), 하이픈(-)이 포함된 6~18 문자.
		</li>
		<li>
			<label for="mail">Email(*):</label>
			<input id="mail" value="@" />
		</li>
		<li>
			<label for="url">Web(*):</label>
			<input id="url" value="http://" />
		</li>
		<li>
			<label for="tel">Tel(*):</label>
			<input id="tel" />
			하이픈(-)은 입력하지 마세요.
		</li>
	</ul>
	<input type="submit" value="전송" />
</form>

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
// <![CDATA[
jQuery( function($) { // HTML 문서를 모두 읽으면 포함한 코드를 실행

	// 정규식을 변수에 할당
	// 정규식을 직접 작성할 줄 알면 참 좋겠지만
	// 변수 우측에 할당된 정규식은 검색하면 쉽게 찾을 수 있다
	// 이 변수들의 활약상을 기대한다
	// 변수 이름을 're_'로 정한것은 'Reguar Expression'의 머릿글자
	var re_id = /^[a-z0-9_-]{3,16}$/; // 아이디 검사식
	var re_pw = /^[a-z0-9_-]{6,18}$/; // 비밀번호 검사식
	var re_mail = /^([\w\.-]+)@([a-z\d\.-]+)\.([a-z\.]{2,6})$/; // 이메일 검사식
	var re_url = /^(https?:\/\/)?([a-z\d\.-]+)\.([a-z\.]{2,6})([\/\w\.-]*)*\/?$/; // URL 검사식
	var re_tel = /^[0-9]{8,11}$/; // 전화번호 검사식

	// 선택할 요소를 변수에 할당
	// 변수에 할당하지 않으면 매번 HTML 요소를 선택해야 하기 때문에 귀찮고 성능에도 좋지 않다
	// 쉼표를 이용해서 여러 변수를 한 번에 선언할 수 있다
	// 보기 좋으라고 쉼표 단위로 줄을 바꿨다
	var
		form = $('.form'),
		uid = $('#uid'),
		upw = $('#upw'),
		mail = $('#mail'),
		url = $('#url'),
		tel = $('#tel');

	// 선택한 form에 서밋 이벤트가 발생하면 실행한다
	// if (사용자 입력 값이 정규식 검사에 의해 참이 아니면) {포함한 코드를 실행}
	// if 조건절 안의 '정규식.test(검사할값)' 형식은 true 또는 false를 반환한다
	// if 조건절 안의 검사 결과가 '!= true' 참이 아니면 {...} 실행
	// 사용자 입력 값이 참이 아니면 alert을 띄운다
	// 사용자 입력 값이 참이 아니면 오류가 발생한 input으로 포커스를 보낸다
	// 사용자 입력 값이 참이 아니면 form 서밋을 중단한다
	form.submit( function() {
		if (re_id.test(uid.val()) != true) { // 아이디 검사
			alert('[ID 입력 오류] 유효한 ID를 입력해 주세요.');
			uid.focus();
			return false;
		} else if(re_pw.test(upw.val()) != true) { // 비밀번호 검사
			alert('[PW 입력 오류] 유효한 PW를 입력해 주세요.');
			upw.focus();
			return false;
		} else if(re_mail.test(mail.val()) != true) { // 이메일 검사
			alert('[Email 입력 오류] 유효한 이메일 주소를 입력해 주세요.');
			mail.focus();
			return false;
		} else if(re_url.test(url.val()) != true) { // URL 검사
			alert('[Web 입력 오류] 유효한 웹 사이트 주소를 입력해 주세요.');
			url.focus();
			return false;
		} else if(re_tel.test(tel.val()) != true) { // 전화번호 검사
			alert('[Tel 입력 오류] 유효한 전화번호를 입력해 주세요.');
			tel.focus();
			return false;
		}
	});

	// #uid, #upw 인풋에 입력된 값의 길이가 적당한지 알려주려고 한다
	// #uid, #upw 다음 순서에 경고 텍스트 출력을 위한 빈 strong 요소를 추가한다
	// 무턱대고 자바스크립트를 이용해서 HTML 삽입하는 것은 좋지 않은 버릇
	// 그러나 이 경우는 strong 요소가 없어도 누구나 form 핵심 기능을 이용할 수 있으니까 문제 없다
	$('#uid, #upw').after('<strong></strong>');

	// #uid 인풋에서 onkeyup 이벤트가 발생하면
	uid.keyup( function() {
		var s = $(this).next('strong'); // strong 요소를 변수에 할당
		if (uid.val().length == 0) { // 입력 값이 없을 때
			s.text(''); // strong 요소에 포함된 문자 지움
		} else if (uid.val().length < 3) { // 입력 값이 3보다 작을 때
			s.text('너무 짧아요.'); // strong 요소에 문자 출력
		} else if (uid.val().length > 16) { // 입력 값이 16보다 클 때
			s.text('너무 길어요.'); // strong 요소에 문자 출력
		} else { // 입력 값이 3 이상 16 이하일 때
			s.text('적당해요.'); // strong 요소에 문자 출력
		}
	});

	// #upw 인풋에서 onkeyup 이벤트가 발생하면
	upw.keyup( function() {
		var s = $(this).next('strong'); // strong 요소를 변수에 할당
		if (upw.val().length == 0) { // 입력 값이 없을 때
			s.text(''); // strong 요소에 포함된 문자 지움
		} else if (upw.val().length < 6) { // 입력 값이 6보다 작을 때
			s.text('너무 짧아요.'); // strong 요소에 문자 출력
		} else if (upw.val().length > 18) { // 입력 값이 18보다 클 때
			s.text('너무 길어요.'); // strong 요소에 문자 출력
		} else { // 입력 값이 6 이상 18 이하일 때
			s.text('적당해요.'); // strong 요소에 문자 출력
		}
	});

	// #tel 인풋에 onkeydown 이벤트가 발생하면
	// 하이픈(-) 키가 눌렸는지 확인
	// 하이픈(-) 키가 눌렸다면 입력 중단
	tel.keydown( function() {
		if(event.keyCode==109 || event.keyCode==189) {
			return false;
		}
	});
});
// ]]>
</script>

jQuery 코드 해설

  • 변수 할당은 'var 변수이름 = 할당 값'  형식으로 작성한다. re_* 라는 변수에 다양한 정규식을 할당했다. 정규식 표현은 사용자 입력 값이 유효한지 검사해 줄 것이다.
  • 정규 표현식을 어떤 값과 비교하면 true 또는 false 값을 얻을 수 있다. true라면 form을 서밋하고 false라면 form 서밋을 중단한다. 정규 표현식으로 데이터 유효성을 확인하려면 '정규식.test(어떤값)' 형식으로 작성한다. 
  • .val() 메소드는 선택한 input 또는 select 요소의 value 값을 구한다. uid.val()은 $('#uid').val()과 같다. 이렇게 val() 괄호 안쪽이 비어있으면 값을 구해온다. 만약 val() 괄호 안쪽에 명시적으로 어떤 값이 있으면 값을 구해오는 것이 아니라 값을 넣는다. 여기서 val() 값은 사용자가 #uid 인풋에 입력한 값이다.
  • if(좌변의 정규식과 != 우변의 사용자 입력 값이 같지 않으면) 사용자가 입력한 값은 오류이다. 이 조건문은 사용자 입력 값이 올바르지 않은 경우 {실행문}을 실행한다. 조건문 안에서는 ==(같음), !=(같지않음), !(아님), >(보다큰), <(보다작은), >=(같거나 큰), <=(같거나 작은) 이런 등호가 자주 쓰인다. 등호는 어떤 값을 true, false와 같은 참 거짓 또는 숫자와 자주 비교한다. 
  • .after() 메소드는 선택한 요소의 다음(형제 노드) 순서에 문자열이나 HTML 요소를 넣는다. 이 예제는 $('#uid, #upw').after('<strong></strong>') 두 요소를 선택하고 두 요소의 다음에 strong 요소를 넣었다. 반대 개념의 메소드 .before()는 선택한 요소의 이전 형제노드에 문자열을 넣는다. 
  • .length 메소드는 선택한 HTML 요소의 개수 또는 val() 값의 문자 개수를 구해온다. 이 경우는 선택한 HTML 요소의 개수를 구한 것이 아니라 val() 값의 문자 개수를 구했다.
  • .next() 메소드는 선택한 요소의 바로 다음에 등장하는 형제를 선택한다. $(this).next('strong') 예제는 선택된 본인의 다음에 등장하는 strong 요소를 선택한다. 반대 개념의 메소드 .prev()는 이전 형제 요소를 선택한다. 
  • .text() 메소드는 .val() 메소드와 사용법이 유사하다. HTML 요소 내부에 포함된 문자열을 구하거나 셋팅한다. 값이 비어있으면 값을 구해오지만 값이 설정되어 있으면 값을 셋팅한다. 이 코드는 값을 셋팅하는 예제만 포함하고 있다.
  • event.keyCode는 사용자가 누른 키의 값을 구한다. 키 값은 숫자를 반환하는데. 109, 189는 하이픈(-)의 키 값이다. 즉 하이픈(-) 키가 눌리면 keydown 동작을 취소함으로써 하이픈(-) 입력을 제한한다.
분류: 자바스크립트 | 2011년 7월 20일, 10:32 | 정찬명 | 댓글: 18개 | 
트랙백URI - http://naradesign.net/wp/2011/07/20/1663/trackback/


출처 - http://naradesign.net/wp/2011/07/20/1663/



===================================================================================



자료출처 : http://cafe.daum.net/bestProgrammer/58B7/31?docid=1HPMo|58B7|31|20101224180232&q=jquery%20success

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jQuery폼유효성</title>
<SCRIPT src="/FBZ/js/jQuery1-4-4.js" language="xxjavascript"></SCRIPT>
<SCRIPT src="/FBZ/js/jquery.form.js" language="xxjavascript"></SCRIPT>
<SCRIPT language="xxjavascript">
$(document).ready(function() { 
$('#test').click(function(){ TEST(); });
});
function TEST(){
/*
* 유효값체크구문
* 검사할개체아이디:실행함수1,실행함수2,..실행함수n #인수1 #인수2..
*/
var chk_rule =  "name:isEmpty"
+"@id:isEmpty"
+"@pwd:isEmpty,isNumber"
+"@re_pwd:isEmpty,isNumber,eqVal#pwd#re_pwd" //인수pwd ,re_pwd
+"@tel:isEmpty,isNumber"
+"@email:isEmail"
+"@ssn1:isEmpty,isNumber"
+"@ssn2:isEmpty,isNumber,isSSN#ssn1#ssn2"
;

if(validateForm(chk_rule)){
console.log("validate success!!");
}
}

//폼 유효성 검사하는 함수들
//값이 없는경우 체크하는 함수
function isEmpty(obj){
return obj.val().trim() != "";
}
//두 값이 같은지 체크하는 함수
function eqVal(obj1 , obj2){
return obj1.val() == obj2.val();
}
//값이 숫자만 인지 체크
function isNumber(obj){
    var reg = /^\d+$/;
return reg.test(obj.val());
}
//유효한 이메일인지 체크
function isEmail(obj){
var reg = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
return reg.test(obj.val());
}
//유효한 주민번호인지 체크
function isSSN(obj1 , obj2){
var jumin = obj1.val()+obj2.val();
  
    if (jumin.length != 13)  return false;
  
    var tval =    jumin.charAt(0)*2 + jumin.charAt(1)*3 + jumin.charAt(2)*4
     + jumin.charAt(3)*5 + jumin.charAt(4)*6 + jumin.charAt(5)*7
     + jumin.charAt(6)*8+ jumin.charAt(7)*9 + jumin.charAt(8)*2
     + jumin.charAt(9)*3 + jumin.charAt(10)*4 + jumin.charAt(11)*5;
  
    var tval2 = 11- (tval % 11);
    var tval2 = tval2 % 10;
return (jumin.charAt(12) == tval2 && (jumin.charAt(6) == "1" || jumin.charAt(6) == "2"));
}

//통합 폼 유효성 검사
function validateForm(chk_rule){
var chk_line = chk_rule.split("@"); //@로 분리해서 배열로 만든다.
var validate = true; // 이 값이 false 가되면 전체 경고창을 띠우고 루프문을 빠져나간다. 

//@분리한것들 루프돌리기
$.each(chk_line , function(index , line){
if(!validate) return false;
var element  = line.split(":");
var obj  = $('#'+element[0]); //:로 분리해서 첫번? 문자는 속성을 검사할 객체다. 
var fn_list  = element[1].split(","); //:로 분리시 두번?부터는 함수리스트다 ,로 다시 쪼갠다.

//함수들 루프돌리자!
$.each(fn_list , function(index , fns){
var args = fns.split("#"); //#으로 쪼개서 두번째거부턴 인수다.
var fn = args[0]; // 실행함수 문자열

//유효성 체크시작 문자열로 비교해 해당하는 함수 실행
if(fn == "isEmpty"){
validate = isEmpty(obj);
}else if(fn == "isNumber"){
validate = isNumber(obj);
}else if(fn == "eqVal"){
validate = eqVal($('#'+args[1]) , $('#'+args[2]));
}else if(fn == "isEmail"){
validate = isEmail(obj);
}else if(fn == "isSSN"){
validate = isSSN($('#'+args[1]) , $('#'+args[2]));
}

//함수실행후 false 가 나오면 적당한 alert! 띠우고 해당객체에 포거스 주고 빠져나간다.
if(!validate){
alert!(message[fn]);
obj.focus();
return false;
}
});
});

return validate;
}

//alert! 창 띄울? 쓰는 메시지들 함수명이랑 맞춘다.
var message =  {
       "isEmpty":"값이 비었습니다."
      ,"isNumber":"숫자만 입력할수 있습니다."
      ,"eqVal":"두 값이 동일"
      ,"isEmail":"유효하지 않은 이메일"
      ,"isSSN":"유효하지 않은 주민번호"
};
</SCRIPT>
</head>
<body>
<DIV style="border:dotted;border-color:blue">
<FORM name="form01" id="form01">
name:<INPUT type="text" name="name" id="name"><br/>
id:<INPUT type="text" name="id" id="id"><br/>
pwd:<INPUT type="password" name="pwd" id="pwd"><br/>
re_pwd:<INPUT type="password" name="re_pwd" id="re_pwd"><br/>
tel:<INPUT type="tel" name="tel" id="tel"><br/>
email:<INPUT type="text" name="email" id="email"><br/>
ssn:<INPUT type="text" name="ssn1" id="ssn1">&nbsp;<INPUT type="text" name="ssn2" id="ssn2"><br/>
<INPUT type="button" value="TEST" id="test">
</FORM>
</DIV>
</body>
</html> 

'Development > jQuery' 카테고리의 다른 글

jQuery - URL을 파싱  (0) 2012.05.29
jQuery - 플러그인 모음  (0) 2012.05.29
jQuery - Url Parameter 추출  (0) 2012.05.29
jquery - function 사용법  (0) 2012.05.23
Eclipse Aptana Plugin 설치  (0) 2012.05.21
Posted by linuxism
,


1. 보통 폼을 전송할 때 onsubmit 이벤트 핸들러를 이용하잖습니까

 

<form action="" METHOD=POST name=saveform onsubmit="return checksaveform();">

 <input type="text" name="fName">

  <input type="submit">

</form>

 

2. 근데 return이 있는 것과 없는 것의 차이점은 무엇인가요??, 즉 아래처럼 했을 때와 무슨 차이가 있죠??

<form action="" METHOD=POST name=saveform onsubmit="checksaveform();">

 

 

3. checksaveform함수는 다음과 같습니다.

--------------------------------------------------------------------

function checksaveform() {

  if (document.saveform.fName.value.length < 1) {
    alert("이름이 입력되지 않았습니다.");
    document.saveform.fName.focus();
    return false;
  }

  document.saveform.submit();
}

 




안녕하세요...

 

HTML 태그 중에는 기본적으로 이벤트 속성을 가지고 있는 태그들이 몇 있는 것은 알고 계실겁니다.

두가지를 예를 들자면, <A>태그와 지금 질문주신 <FORM> 태그도 있을 거구요..

 

앵커 태그의 경우는 사용자가 링크를 클릭하여 이벤트를 발생시키게 됩니다.

그런데 이러한 이벤트의 발생여부를 결정 짓는 것이 on이벤트 마다 존재합니다.

디폴트로는 true를 return 하고 있지요..

 

 

 

일단 설명이 잘 이해가 안되실 것 같아 코드상으로 예를 들어 보여 드리면 아래와 같습니다.

 

+ 아래와 같은 코드는 아무리 클릭해도 웹페이지의 변동이 없습니다.

<a href="http://www.naver.com" onclick="return false">네이버</a>

 

+ 아래코드는 페이지 변동이 있겠습니다.

<a href="http://www.naver.com" onclick="return true">네이버</a>

 

그렇다면 아래의 경우도 예외는 아니겠지요? ^^

<form onsubmit="return false">

<form onsubmit="return true">

 

submit 이벤트가 발생했을 때... onsubmit 속성에 스크립 구문을 실행할 수 있는데...

onsubmit="return checksaveform();

return이 있는 것은 form객체가 submit 이벤트가 발생했을 때...

관련 처리를 하고...

돌려 받는 값이 true 또는 false에 의해 전송을 하던가 중지를 하게 되는 겁니다.

 

onsubmit="checksaveform();" 이러한 경우는..

전송하기 전... checksaveform() 함수만을 수행하겠다는 의미만 되겠습니다.

 

물론, return 구문이 없는 경우더라도, submit에 대한 취소를 못하는 것은 아닙니다만...

비정상적인 접근방법이라....일단 이렇습니다.


출처 - 네이버 지식

'Development > HTML' 카테고리의 다른 글

html - viewport  (0) 2012.05.28
html - defer, async 속성  (0) 2012.05.28
HTML - rel 속성  (0) 2012.05.15
웹페이지를 가운데 정렬 하기  (0) 2012.05.11
테이블을 기준으로 레이어 생성하기  (0) 2012.05.11
Posted by linuxism
,