2012-06-23 5 views
0

jQuery의 $.serialize() 또는 $.serializeArray()을 사용하여 직렬화되는 입력 필드 (해당 속성) 유형을 가져올 수 있습니까? 분명히 그것은 헤더에 입력 이름을 전송하지만, 내가 같이 잡을 수 있을지 궁금합니다. textarea, input type="text", input type="radio"?jQuery의 .serialize()를 사용할 때 입력 필드 유형 얻기

+0

GET 무엇을 할 속성? 직렬화와 결합 하시겠습니까? 또는 다른 곳에 저장 하시겠습니까? 결합하면 ... 구조가 어떻게 생겼 으면 좋겠습니까? – charlietfl

+0

아니요, 해당 API는 그렇게하지 않습니다. 그러나 자신 만의 코드를 작성하여이를 수행 한 다음 매개 변수 목록을 결합 할 수 있습니다. – Pointy

+0

@charlietfl 본질적으로 어딘가에 저장할 속성을 얻고 싶습니다. 내 모델의 필드를 유효화하고 (컨트롤러에 게시되는 동안) 어떻게 든 잘못된 필드를 대상으로 설정하고 (속성을 가져 와서 얻을 수 있음) 오류 메시지를 각각 채 웁니다. –

답변

0

원하는 입력 구조를 쉽게 조작 할 수 있습니다. 여기이 맛

DEMO : http://jsfiddle.net/zd3Pc/

/* array of element objects */ 
var formMap = $.map($('form :input'), function(el, idx) { 
    return { 
     type: el.type, 
     value: el.value, 
     name: el.name 
    }; 
}); 

/* object with arrays of name and value properties within type property */ 

var formObj = {} 
$('form :input').each(function() { 
    if (!formObj[this.type]) { 
     formObj[this.type] = []; 
    } 
    formObj[this.type].push({ 
     name: this.name, 
     value: this.value 
    }) 
}) 
1

어때? 당신이 태그 및/또는 유형에 따라 다른 작업을 복용, 자신의 ID로 입력을 참조 할 수에서

[{id: "c", name: "x" tag: "TEXTAREA" type: undefined}, 
{id: "a", name: "z", tag: "INPUT", type: "text"}, 
{id: "b", name: "y", tag: "INPUT", type: "hidden"}, 
...] 

:

var allInputs = $("#myform *:input").map(function (i,e) 
        { 
         return {id: $(e).attr("id"), 
           name: $(e).attr("name"), 
           type: $(e).attr("type"), 
           tag: $(e).get(0).tagName 
           }; 
        } 
        ); 

는이 양식 객체를 제공 http://jsfiddle.net/cranio/6uBLQ/

보기 이 객체를 직렬화하고 전송하는 등의 작업을 수행합니다. hiddens, SELECTs, TEXTAREAs ...

+1

'get()'을 사용하여 jQuery에서 객체 리터럴을 꺼냅니다. – charlietfl