제목: 글쓰기 페이지 구성 (Client)
최초작성일: 2015-01-05
최종수정일: 2015-01-05
2015년 새해가 밝았습니다. 다들 2015년에는 하시는 일 원하시는대로 이루어지길 빌겠습니다. 물론 저도, 우리 꼬맹이도 건강하고 많이 이루어나가는 한 해가 되었으면 좋겠네요. 정말 한 해가 지나고 새해가 밝으면 문자 그대로 많은 일들을 후회하고, 새해에 대한 다짐과 기대에 차오르는 것 같습니다. 2015년에는 많은 핑계들로 다짐을 지워가는 한 해는 되지 않도록 열심히 살아봐야겠네요. 지난 시간에 목록 페이지에 이어 상세 페이지까지 개발해 보았습니다. 이제 신규로 글을 등록하는 기능을 구현해보도록 하겠습니다. 글 등록 역시 일단은 서버가 없으니 UI만 만들어보도록 하겠습니다. Local Storage에 저장할 수도 있고, WEB Database에 저장할 수도 있겠지만, 일단 저장은 하지 않고 UI 개발만 하고 멈추도록 하겠습니다. 입력에 사용할 항목은 아래와 같이 정의합니다.-. 입력자 성명
-. 게시물 제목
-. 게시물 내용
-. 비밀번호
그럼 UI를 구성해보겠습니다. 글쓰기 페이지 역시 [헤더] - [본문] - [푸터]로 영역을 분할하여 구성하겠습니다. 아래 소스 코드를 참고하셔서 ./bbs_write.html 파일로 저장합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <! DOCTYPE html> < html lang = "ko" > < head > < meta http-equiv = "content-type" content = "text/html;charset=UTF-8" > < meta name = "viewport" content = "user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width" > < title >Mobile BBS</ title > < link rel = "stylesheet" type = "text/css" href = "./css/common.css" /> </ head > < body > < header > < h1 >Mobile BBS</ h1 > </ header > < div class = "wrap" > < div class = "content_line" > < span class = "header" >작성자</ span > < span >< input type = "text" class = "input" id = "inputUserName" >< span > </ span ></ span ></ div > < div class = "content_line" > < span class = "header" >비밀번호</ span > < span >< input type = "text" class = "input" id = "password" ></ span > </ div > < div class = "content_line" > < span class = "header" >글제목</ span > < span >< input type = "text" class = "input" id = "subject" ></ span > </ div > < div class = "content_line" > < span class = "header" >글내용</ span > < span >< textarea id = "content" class = "text" ></ textarea ></ span > </ div > </ div > < footer > < button id = "btnWrite" >글쓰기</ button > </ footer > </ body > < script type = "text/javascript" charset = "utf-8" src = "./scripts/jquery-1.10.2.min.js" ></ script > < script type = "text/javascript" charset = "utf-8" src = "./scripts/common.js" ></ script > </ html > |
그럼 이제 글쓰기 페이지의 모양을 위해 간단하게 StyleSheet를 추가해보겠습니다.
StyleSheet는 모든 페이지에서 common.css를 사용하도록 하겠습니다. common.css에 글쓰기 페이지와 관련된 부분을 추가해보겠습니다.
1 2 3 | .wrap .content_line .header{ display :inline- block ; width : 100px ; text-align : center ; vertical-align : top ; padding-top : 5px ;} .wrap .content_line .input{ width : 250px ; border : 1px solid #ccc ; background-color : #f4f4f4 ;border-radius: 3px ; height : 22px ; line-height : 22px ;} .wrap .content_line .text{ width : 250px ; border : 1px solid #ccc ; background-color : #f4f4f4 ;border-radius: 3px ; height : 200px ; line-height : 200px ;} |
-. Validation
-. 서버 인터페이스
-. 목록 화면으로 Re-Direction
작업 중 이번 과정에서는 Validation 부분과 인터페이스를 할 수 있는 모듈까지만 작성해보도록 하겠습니다. 그럼 먼저 Validation 부분을 살펴보도록 하겠습니다. 일반적으로는 4개의 컬럼이 필수라면 아래의 코드와 같이 작성합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | if ($( '#inputUserName' ).val() == '' ) { alert( '작성자는 필수 입력입니다.' ); return ; } if ($( '#password' ).val() == '' ) { alert( '비밀번호는 필수 입력입니다.' ); return ; } if ($( '#subject' ).val() == '' ) { alert( '글제목은 필수 입력입니다.' ); return ; } if ($( '#content' ).val() == '' ) { alert( '글내용은 필수 입력입니다.' ); return ; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | < div class = "wrap" > < div class = "content_line" > < span class = "header" >작성자</ span > < span >< input type = "text" class = "input mandatory" id = "inputUserName" data = "작성자" >< span > </ span ></ span ></ div > < div class = "content_line" > < span class = "header" >비밀번호</ span > < span >< input type = "password" class = "input mandatory" id = "password" data = "비밀번호" ></ span > </ div > < div class = "content_line" > < span class = "header" >글제목</ span > < span >< input type = "text" class = "input mandatory" id = "subject" data = "글제목" ></ span > </ div > < div class = "content_line" > < span class = "header" >글내용</ span > < span >< textarea id = "content" class = "text mandatory" data = "글내용" ></ textarea ></ span > </ div > </ div > |
1 2 3 4 5 6 7 8 9 10 11 12 13 | COMM.validate = function () { var items = $( '.mandatory' ); var messages = '' , isValid = true ; for ( var inx=0; inx<items.length; inx++) { if ($(items[inx]).val() == '' ) { isValid = false ; messages += $(items[inx]).attr( 'data' ) + '은(는) 필수 입력값입니다.\n' ; break ; } } return {valid: isValid, messages: messages}; }; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var WRITER = {}; var WRITER.write = function () { var validator = COMM.validate(); if (!validator.valid) { alert(validator.messages); return ; } }; $(document).ready( function () { $( '#btnWrite' ).on( 'click' , function () { WRITER.write(); }); }); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | COMM.doPost = function (url, input, success, fail) { var option = {}; option.url = url + '?__jsonParams=' + JSON.stringify(input); option.type = 'POST' ; option.headers = { 'Content-Type' : 'application/json' }; option.success = function (data) { try { if ( typeof data == 'string' ) data = JSON.parse(data); success(data); } catch (e) { if (fail && typeof fail == 'function' ) { fail(e); } else { alert(e.stack); } } }; option.error = function (jqXHR, status, error) { if (fail && typeof fail == 'function' ) { fail(error); } else { alert(error); } }; $.ajax(option); }; |
1 | option.data = input; |
'모바일 > 게시판만들기' 카테고리의 다른 글
[하이브리드앱 만들기] 모바일 간단 게시판 #3 - 상세 페이지 (0) | 2015.01.05 |
---|---|
[하이브리드앱 만들기] 모바일 간단 게시판 #2 - 목록 페이지 (2) | 2015.01.04 |
[하이브리드앱 만들기] 모바일 간단 게시판 #1 (0) | 2015.01.01 |