<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>F monologue &#187; 자바스크립트</title>
	<atom:link href="http://blog.fguy.com/tag/%ec%9e%90%eb%b0%94%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8a%b8/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fguy.com</link>
	<description>Taehoon Kang</description>
	<lastBuildDate>Fri, 10 Feb 2012 00:53:34 +0000</lastBuildDate>
	<language>ko</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.fguy.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/302d17afa2133e49879c9121b033814d?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>F monologue &#187; 자바스크립트</title>
		<link>http://blog.fguy.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.fguy.com/osd.xml" title="F monologue" />
	<atom:link rel='hub' href='http://blog.fguy.com/?pushpress=hub'/>
		<item>
		<title>Simple Javascript Form Validator</title>
		<link>http://blog.fguy.com/2008/01/14/simple-javascript-form-validator/</link>
		<comments>http://blog.fguy.com/2008/01/14/simple-javascript-form-validator/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 08:57:19 +0000</pubDate>
		<dc:creator>fguy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[자바스크립트]]></category>
		<category><![CDATA[Validation]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://fguy.krac.kr/2008/01/14/simple-javascript-form-validator/</guid>
		<description><![CDATA[회사에서 사용중인 웹개발 프레임워크인 Lucy는 Webwork를 감싸서 사용하고 있는데, Validation Annotation 을 엉망으로 꼬아놓는 바람에 Webwork Client-Side Validation을 사용할 수 없고 촉박한 일정등의 상황때문에 간단한 Javascript form validator를 생각해보게 되었다. Concept은 http://tetlaw.id.au/view/javascript/really-easy-field-validation&#160;에서 따왔으나, alert 으로 알려주는 국내 방식(우리 회사 방식? &#8230; <a href="http://blog.fguy.com/2008/01/14/simple-javascript-form-validator/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.fguy.com&amp;blog=13748523&amp;post=16&amp;subd=fguyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>회사에서 사용중인 웹개발 프레임워크인 Lucy는 Webwork를 감싸서 사용하고 있는데, Validation Annotation 을 엉망으로 꼬아놓는 바람에 <a href="http://wiki.opensymphony.com/display/WW/Client+Side+Validation" target="_blank">Webwork Client-Side Validation</a>을 사용할 수 없고 촉박한 일정등의 상황때문에 간단한 Javascript form validator를 생각해보게 되었다.</p>
<p>Concept은 <a href="http://tetlaw.id.au/view/javascript/really-easy-field-validation">http://tetlaw.id.au/view/javascript/really-easy-field-validation</a>&nbsp;에서 따왔으나, alert 으로 알려주는 국내 방식(우리 회사 방식? 별로 맘에 들진 않는다.)에 맞지 않고, 검색 서비스 특성상 무거운 prototype.js 를 사용할 수도 없기 때문에 간단하게 만들어 보았다. </p>
<p>간단히 만들었으니 당연히 기능은 미약하기 짝이 없다. </p>
<p><a href="http://fguy.krac.kr/files/1/gk0.js" />gk0.js</a><br />
사용방법은 </p>
<ul>
<li>아래처럼, 자바스크립트 라이브러리를 포함하고,
<p><font color="#ffffff">&lt;script src=&#8221;validator.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;</font></p>
</li>
<li>다음과 같이 form 요소를 작성한다
<p><font color="#ffffff">&lt;input class=&#8221;required validate-number&#8221; id=&#8221;field1&#8243; name=&#8221;field1&#8243;&nbsp; title=&#8221;필드 1&#8243; /&gt;</font></p>
<p>validation type을 class 속성을 통해 전달 한다.</p>
</li>
<li>그 다음, 아래와 같이 자바스크립트를 초기화 하면 된다.
<pre>	document.폼이름.onsubmit = function() {
		return Validator.validate(this);
	}
</pre>
</li>
</ul>
<p>지원하는 validation type
</p>
<ul>
<li>required : 반드시 값을 입력해야 함
</li>
<li>validate-number : 숫자만 입력가능 (., +, &#8211; 포함)
</li>
<li>validate-digits : 자릿수만 입력가능 (숫자만)
</li>
<li>validate-alpha : 알파뱃만 입력가능
</li>
<li>validate-alphanum : 알파뱃과 숫자만 가능
</li>
<li>validate-date : 날짜만 가능
</li>
<li>validate-email : 이메일 주소
</li>
<li>validate-url : URL</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fguyblog.wordpress.com/16/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fguyblog.wordpress.com/16/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fguyblog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fguyblog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fguyblog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fguyblog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fguyblog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fguyblog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fguyblog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fguyblog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fguyblog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fguyblog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fguyblog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fguyblog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fguyblog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fguyblog.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.fguy.com&amp;blog=13748523&amp;post=16&amp;subd=fguyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.fguy.com/2008/01/14/simple-javascript-form-validator/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d10c905edc572a61b5206377c1a36c98?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fguy79</media:title>
		</media:content>
	</item>
		<item>
		<title>window.onscrollend 이벤트</title>
		<link>http://blog.fguy.com/2008/01/02/window-onscrollend-%ec%9d%b4%eb%b2%a4%ed%8a%b8/</link>
		<comments>http://blog.fguy.com/2008/01/02/window-onscrollend-%ec%9d%b4%eb%b2%a4%ed%8a%b8/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 01:08:00 +0000</pubDate>
		<dc:creator>fguy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[자바스크립트]]></category>

		<guid isPermaLink="false">http://fguy.krac.kr/2008/01/02/window-onscrollend-%ec%9d%b4%eb%b2%a4%ed%8a%b8/</guid>
		<description><![CDATA[function showExample() { var win = window.open(&#8216;about:blank&#8217;,'_blank&#8217;); win.document.write(&#8220;&#8221;); win.document.write(&#8220;window.onscrollend = function() {alert(&#8216;스크롤의 끝에 다다랐음&#8217;);return false}&#8221;); win.document.write($(&#8220;windowOnScrollEndCode&#8221;).innerHTML); win.document.write(&#8220;&#8221;); win.document.write(&#8220; Scroll Down↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓End of scroll &#8220;); win.document.close(); } window에서 scroll의 끝에 다다랐을때의 이벤트가 필요해서 만들었다.세로 스크롤을 끝까지 내리면 발생하는 Event. (창, 스크롤의 크기를 &#8230; <a href="http://blog.fguy.com/2008/01/02/window-onscrollend-%ec%9d%b4%eb%b2%a4%ed%8a%b8/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.fguy.com&amp;blog=13748523&amp;post=15&amp;subd=fguyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>	function showExample() {<br />
		var win = window.open(&#8216;about:blank&#8217;,'_blank&#8217;);<br />
		win.document.write(&#8220;&#8221;);<br />
		win.document.write(&#8220;window.onscrollend = function() {alert(&#8216;스크롤의 끝에 다다랐음&#8217;);return false}&#8221;);<br />
		win.document.write($(&#8220;windowOnScrollEndCode&#8221;).innerHTML);<br />
		win.document.write(&#8220;&#8221;);<br />
		win.document.write(&#8220;<br />
<h1>Scroll Down<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />↓<br />End of scroll</h1>
<p>&#8220;);<br />
		win.document.close();<br />
	}</p>
<p>window에서 scroll의 끝에 다다랐을때의 이벤트가 필요해서 만들었다.<br />세로 스크롤을 끝까지 내리면 발생하는 Event. <br />(창, 스크롤의 크기를 확인하는 function은 lightbox.js 로 부터 가져왔다.)</p>
<div style="text-align:center;"><a href="showExample()"><strong><font size="3">예제보기</font></strong></a></div>
<p>코드는 아래와 같다.
<pre>// creates "onscrollend" event
window.onscroll = function() {
	var scroll = getPageScroll(); // function from lightbox.js
	var size = getPageSize(); // function from lightbox.js

	if((size[3] + scroll[1])/size[1] == 1) {
		if(window.onscrollend) {
			return window.onscrollend();
		}
		return false;
	}
}

//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.com
//
function getPageScroll(){

	var xScroll, yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
		xScroll = self.pageXOffset;
	} else if (document.documentElement &amp;&amp; document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
		xScroll = document.documentElement.scrollLeft;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
		xScroll = document.body.scrollLeft;
	}

	arrayPageScroll = new Array(xScroll,yScroll)
	return arrayPageScroll;
}

// -----------------------------------------------------------------------------------

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.com
// Edit for Firefox by pHaez
//
function getPageSize(){

	var xScroll, yScroll;

	if (window.innerHeight &amp;&amp; window.scrollMaxY) {
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight &gt; document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

	var windowWidth, windowHeight;

//	console.log(self.innerWidth);
//	console.log(document.documentElement.clientWidth);

	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth;
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement &amp;&amp; document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}

	// for small pages with total height less then height of the viewport
	if(yScroll &lt; windowHeight){
		pageHeight = windowHeight;
	} else {
		pageHeight = yScroll;
	}

//	console.log("xScroll " + xScroll)
//	console.log("windowWidth " + windowWidth)

	// for small pages with total width less then width of the viewport
	if(xScroll &lt; windowWidth){
		pageWidth = xScroll;
	} else {
		pageWidth = windowWidth;
	}
//	console.log("pageWidth " + pageWidth)

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
	return arrayPageSize;
}
</pre></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/fguyblog.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/fguyblog.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fguyblog.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fguyblog.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fguyblog.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fguyblog.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fguyblog.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fguyblog.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fguyblog.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fguyblog.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fguyblog.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fguyblog.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fguyblog.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fguyblog.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fguyblog.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fguyblog.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.fguy.com&amp;blog=13748523&amp;post=15&amp;subd=fguyblog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.fguy.com/2008/01/02/window-onscrollend-%ec%9d%b4%eb%b2%a4%ed%8a%b8/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d10c905edc572a61b5206377c1a36c98?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">fguy79</media:title>
		</media:content>
	</item>
	</channel>
</rss>
