2009. 9. 15.

getFormValues() 메서드


                
Validator.prototype.getFormValues = function() {
    var elemValues = new Array();
    var form = document.forms[this.formName];
    var formElements = form.elements;
    for (var i = 0; i < formElements.length; i++) {
        var element = formElements[i];
        if (element.name == this.elemName) {
            var elemType = element.type.toLowerCase();
            if (elemType == "text" || elemType == "textarea"
                    || elemType == "password" || elemType == "hidden")
                elemValues[elemValues.length] = element.value;
            else if (elemType == "checkbox" && element.checked)
                elemValues[elemValues.length]
                     = element.value ? element.value : "On";
            else if (elemType == "radio" && element.checked)
                elemValues[elemValues.length] = element.value;
            else if (elemType.indexOf("select") != -1)
                for (var j = 0; j < element.options.length; j++) {
                    var option = element.options[j];
                    if (option.selected) {
                        elemValues[elemValues.length]
                            = option.value ? option.value : option.text;
                    }
                }
        }
    }
    return elemValues;
}

getFormValues() 메서드는 elemName 속성값과 동일한 이름을 가진 폼 엘리먼트의 값을 반환한다. 브라우저에서 HTML 폼을 표현하는 DOM 객체는 document.forms[this.formName]을 사용해 얻어온다. getFormValues()는 얻어온 elements를 순회하면서, 각각의 엘리먼트를 HTML 타입에 맞게 다룬다.

텍스트, 패스워드 또는 감춰진 필드일 경우 getFormValues() 메서드는 엘리먼트의 값을 반환하는 배열에 추가한다. 엘리먼트의 타입이 체크박스 또는 라디오 버튼일 경우에는 HTML 엘리먼트가 체크된 상태일 때만 추가한다. 마지막으로 엘리먼트가 리스트일 경우 선택된 아이템의 값들을 반환하는 배열에 담는다.

계층 구조에 있는 각각의 Validator는 단일 값을 확인하는 메서드를 필요로 할 것이다. 기본 Validator의 경우, verify() 메서드(Listing 3 참조)가 0을 반환하지만, 다른 Validator들은 자신만의 로직으로 메서드를 교체해야 한다. verify()가 반환하는 값은 msgList에 있는 메시지를 꺼내올 때 사용한다.

0 개의 댓글:

Archive

prof

With you not around it’s a little bit more than I can stand. Don’t tell me I ran out of time If it takes the rest of my life.