2010-06-29 9 views
1

제목이 거의 다 나와 있습니다. 내가 가지고있다howto Zend_Dojo_Form_Element_Filtering onchange submit

$strata = new Zend_Form_Element_Select('strata'); 
$strata->setLabel('Select a strata: ')->setMultiOptions($this->stratalist)->setAttrib('onChange', 'this.form.submit()'); 

그런 다음 다른 양식의 멋진 도장 양식 요소를 사용해야한다. 그래서 나는 그들 모두 같게하기로 결정이 한 : 그것은 나타나 잘 보이지만, 나는 FilteringSelect을 변경할 때 양식이 제출되지

$strata = new Zend_Dojo_Form_Element_FilteringSelect('strata'); 
$strata->setLabel('Select a strata: ')->setMultiOptions($this->stratalist)->setAttrib('onChange', 'this.form.submit()'); 

합니다. 렌더링 된 HTML을 보면 충분합니다.

<select name="strata" id="strata" onChange="this.form.submit()"> 

Dojo 요소는 이와 같이 작동하지 않을 수도 있고 그렇지 않을 수도 있습니다. 그렇다면 FilteringSelect를 변경할 때이 양식을 제출하려면 어떻게해야합니까?

감사합니다.

+0

윙윙 거리는 소리는 이상한 모양이 아닌가요? 일반적인 SELECT 요소처럼 보입니까? – opHASnoNAME

+0

Javascript가 훌륭합니다. 그렇지 않습니까? 글쎄, 브라우저에로드 된 후 html을 dojo로 변경할 수 있다는 것을 알고 계셨습니까? 그것은 젠드가 생각하기에 꽤 많은 방법입니다. 전에 젠드를 사용 해본 적이 있습니까? –

답변

0

그것은이다

$this->setName('StrataSelect'); 

또는

$this->setAttrib('id', 'StrataSelect'); 

이어서 OnChange 이벤트 사용

에서 getElementById :

$strata = new Zend_Dojo_Form_Element_FilteringSelect('strata'); 
$strata->setLabel('Select a strata: ')->setMultiOptions($this->stratalist)->setAttrib('onChange', "document.dojo.byId('StrataSelect').submit();"); 
형태를 정의 할 때

가 그것의 ID를 줄

또는

$strata->setLabel('Select a strata: ')->setMultiOptions($this->stratalist)->setAttrib('onChange', "document.getElementById('StrataSelect').submit();"); 

왜 지금이 기능이 작동하고 "이전 학교"submit() 호출도 dojo에서 onchange 이벤트를 처리하는 것과 관련이 없습니다. 그래서 submit 또는 this.form은 객체, 메소드 등이 아닙니다.

이 양식은보기에 따라 달라집니다. 나는이 양식을 "이식성"이되기를 원합니다. 따라서 나는 dojo.connect를 사용하고 싶지 않다.

아마도 이것을 수행하는 더 좋은 방법이있을 것이다. 그래서 나는 이것을 아직 풀지 않을 것이다.

+0

나는 내 자신의 대답을 받아 들일 것이다. 낮은 수용률은 다른 곳에서 답을 얻는 데 도움이되지 않는다. –

+0

이런 종류의 작동하지 않습니다 ... 내가 그것을 테스트 할 때 (document.getElement ...) 'submit() 함수가 아닙니다.' –

0

parseOnLoad를 사용하도록 설정 했습니까? php로 양식을 작성하는 경우 다음을 수행 할 수 있습니다.

$form = new Zend_Form_Dojo(); 
$form->addElement(
      'FilteringSelect', 
      'myId', 
      array(
       'label' => 'Prerequisite:', 
       'autocomplete' => true, 
       'jsId' => 'myJsId', 
      ), 
    array(),  //attributes 
     array(   //your select values 
      'id1' => 'name1', 
      'id2' => 'name2', 
      'id3' => 'name3', 
     ) 
); 

$ 양식에 몇 가지 속성을 설정해야 할 수도 있습니다. 이 시도 :

$form->setAttribs(array('jsId'=>'MyFormName')); 

을 다음 당신의 온 클릭에 : 양식은 (당신이 어떤이 추정) 유효성 검사를 통과

MyFormName.submit() 

경우 제출해야합니다. 여기

+0

그래, 선택을 변경할 때 코드의 어느 부분이 양식을 제출합니까? –

+0

모든 브라우저에서 지원되는 이름으로 양식에 액세스하고 있습니까? –

+0

MyFormName은 자바 스크립트로 된 실제 이름입니다. –