2013-02-16 2 views
3

prototype.js에서 보이는 양식 필드 값만 serialize 할 수 있습니까? 나는 요소에 같은 이름을 가지지 만 하나는 보이지만 다른 것은 숨겨진 양식을 가지고있다. 내가 $('formid').serialize()을 사용하여 양식을 직렬화하고 때, 다음 두 필드 값이 와서 출력하는 것은 같은 것입니다 : 두 번째 텍스트 상자 일 때프로토 타입은 표시된 양식 필드 값만 serialize합니다.

[email protected]&mymodule_custom_delivery_area=20&mymodule_custom_delivery_area=test 

첫 번째 요소는 드롭 다운을했다. 텍스트 상자가 숨겨져 있고 드롭 다운이 표시되었습니다. 둘 다 같은 이름입니다. 숨겨진 텍스트 상자 값을 사용하고 싶지 않습니다. 어떻게해야합니까? 감사합니다

+0

'숨김'으로 설정하지 말고 완전히 제거 하시겠습니까? – Bergi

답변

3

경고 : 불완전 솔루션;

불행히도 일반적으로이 작업을 수행하는 좋은 방법을 찾지 못했지만 입력 요소가 직접있는 경우 다음 해결책이 유용합니다. 숨겨진; 그러나 일부 입력이 숨겨진 다른 요소에 포함되어 있으면 작동하지 않습니다. 이 목록을 형태 FO 모든 필드를 수집하는 첫 번째 줄에

function check() { 
    var inputs = $("myform").getElements(); 
    var visibleInputs = inputs.grep({ match: function(elem) { return elem.visible();} }); 
    var serialized = Form.serializeElements(visibleInputs); 
    console.log(serialized); // here do something useful with it instead 
} 

: 같은

어쨌든, 내 솔루션 보인다. 두 번째 줄에서 그 모든 보이는 요소를 필터링합니다 ( grepmatch 함수가있는 항목이 필요합니다. 따라서 match 키가있는 간단한 사전을 제공하여이를 정규 표현식을 전달한 것으로 생각합니다). 마지막으로 필터링 된 요소 만 직렬화됩니다.

제발 : 일부 요소가 숨겨져있어서 보이지 않는 입력 필드를 제외 시키려면 누구나이를 향상시킬 수 있습니까? 나는 단지 두뇌 복잡성에 대해서만 생각할 수있다. match 모든 부모를 위로 올라가 숨겨진다면 각각을 개별적으로 검사하는 기능.

+0

감사합니다. 나는 그것을 점검 할것이다 – tinkesh

관련 문제