2012-06-27 4 views
0

두 개의 div에 요소가있는 양식이 있습니다.양식을 직렬화하지만 일부 요소는

드롭 다운에 따라 일부 div는 숨겨져 있고 일부는 표시됩니다.

숨겨진 div가 아닌 표시 가능한 요소 만 사용하여 양식을 직렬화하려고합니다.

숨겨진 div를 필터링 할 수있는 방법이 있습니까?

이 시도하지만

$('<tr />').data($(this).find('form:not(.child:hidden)').serializeObject());

serializeObject이 객체에 serializeArray 변환하는 플러그인이 작동하지 않습니다.

답변

5

<form>는 다음 시도이다.

+0

텍스트 영역, 선택, 확인란, 라디오 (기본적으로 모든 보이는 요소를 확인하고 싶지는 않습니다. 모든 요소를 ​​선택하고 숨겨진 div의 요소를 무효화하고 싶습니다) –

+0

죄송합니다. 이 경우': input : visible '처럼'input' 앞에':'를 넣으십시오. 나는 나의 대답을 업데이트했다. –

+0

+1 멋진! :-) 그래서': input'은 모든 입력을 의미합니까? –

1

사용하지 않는 양식 요소 disable 인 경우 양식과 함께 제출되지 않습니다. 가장 쉽고 빠른 해결책 일 수 있습니다. SO에 앞의 질문에서

, 나는이 내 로컬 확장에 정의 :

/* 
    Extension methods to quickly enable/disable form elements 
    @@see http://stackoverflow.com/questions/625109/jquery-script-load-timing/625126#625126 
*/ 
$.fn.disable = function() { 
    return this.each(function() { 
     if (typeof this.disabled != "undefined") this.disabled = true; 
    }); 
} 

$.fn.enable = function() { 
    return this.each(function() { 
     if (typeof this.disabled != "undefined") this.disabled = false; 
    }); 
} 

그래서, 당신은 같은 것을 할 수있는 :

$('.hidden-div-class').disable(); 

을 그리고 형태를 직렬화. 여기

var data = $(':input:visible', this).serialize(); 
$('<tr />').data(data); 

그리고는 live demo을이다 : 당신의 상황 this에서 해당 가정

관련 문제