====== HTML5 Form ====== * input 엘리먼트의 type 값이 다양해 졌다. * email : Email * url : URL * tel : 전화번호 * search : 검색 * ragne : 슬라이더(범위) * number : 숫자 * date : 날짜 * datetime : 날짜와 시간 * color : 색상 * autofocus : 자동포커스 * FF 13에서 이상한 곳으로 자동 스크롤되는 경우가 있음 * placeholder : input 영영에 안내 문구 넣기 * contenteditable : input이 아닌 일반 엘리먼트에 지정하여 input 처럼 즉시 수정할 수 있게 한다. * autocomplete="off" : 해당 입력필드 자동입력기능 끄기 ===== HTML5 지원여부 검사 ===== * 각 타입별로 input 객체를 생성해서 type을 지정해보고 값을 입력해서 정확한 값이 들어가는지 테스트해볼 수 있다. * [[http://modernizr.com/|Modernizr]]를 통해 HTML5와 CSS3 최신 기법의 사용 가능성을 검사할 수 있다. ===== Color ===== * 대체제 : [[http://recursive-design.com/projects/jquery-simple-color/|jQuery SimpleColor]] * color 지원여부 검사 function hasColorSupport() { input = document.createElement("input"); input.setAttribute("type", "color"); var hasColorType = (input.type !== "text"); // handle Safari/Chrome partial implementation if(hasColorType){ // ===== autofocus ===== function hasAutofocus() { var element = document.createElement('input'); return 'autofocus' in element; } $(function(){ if(!hasAutofocus()){ $('input[autofocus=autofocus]').focus(); } }); ===== placeholder ===== function hasPlaceholderSupport() { var i = document.createElement("input"); return "placeholder" in i; } ===== contenteditable ===== * contenteditable="true" 형태로 일반 필드에 지정한다. * blur 이벤트를 받아서 해당 값이 변경되면 저장해 Ajax 호출로 저장한다. if (document.getElementById("요소ID").contentEditable != null) { // content editable을 지원할 때 하는 작업 } ===== multiple ===== * [[http://www.w3schools.com/tags/att_input_multiple.asp|input multiple]] input 시 다중 선택이 가능하다. 대부분의 최신 브라우저들, IE 10+ * ''type''이 ''email''과 ''file'' 일 경우에만 작동한다.