2014-05-12 3 views
2

사용자 입력을 기반으로 실행되는 유효성 검사 체인 중에 새 유효성 검사기를 추가 할 수 있습니까?사용자 입력을 기반으로 검사기를 설정 ZF 1

예 : 범위 1.10의 입력 수를 지정하는 라디오 선택 형식이 있다고 가정 해 보겠습니다. 1 대신에 5 또는 10을 선택합니다 경우 사용자에 있으므로 사용자가 라디오 중 하나를 클릭 할 때까지 jQuery로 숨겨진 아니오 "는 NotEmpty"유효성 검사기, 10 개 텍스트 입력이, 거기에이 분야 후

<label><input type="radio" name="number" id="number-1" value="1">1</label> 
[...] 
<label><input type="radio" name="number" id="number-10" value="10">10</label> 

양식 유효성을 검사합니다.

내 질문에, 라디오 필드의 유효성 검사 (예 : 해당 필드에 대한 사용자 정의 유효성 검사기) 중에 선택된 라디오 값을 기반으로 지정된 텍스트 입력에 어떻게 든 유효성 검사기를 설정할 수 있습니까?

나의 이전 아이디어는 사용자 정의 검사기를 작성하여 각 텍스트 입력에 적용하는 것이 었습니다.

답변

1

예, 가능하지만 어떤 라디오 선택에 어떤 검사기가 필요한지 정의해야합니다.

조치 또는 직접 Zend_Form에있을 수 있습니다.

주어진 예제에서 isValid() 메서드를 양식에 덮어 쓸 수 있습니다.

또는 addValidator() 양식 요소에 라디오의 값을 먼저 확인하십시오.

$form = new Application_Form_Test(); 

$radio = $this->_getParam('radio','default_value'); 

if($radio=='default_value') { 
    $form->myfieldid->addValidator('NotEmpty'); 
} 

if($form->isValid($this->getRequest()->getPost())) { 
    //valid form! 
} 
+0

덕분에, 나는 그것이 트릭을 할 것 같아요. – Ceg

+0

Zend_Form 클래스에서 isValid ($ params) 함수를 덮어 쓰고 라디오 값을 먼저 확인한 다음 다른 필드에서 유효성 검사기를 추가하거나 제거 할 수 있습니다. parent :: isValid ($ params)를 사용하여 기본 오류를 가져 오는 것을 잊지 마십시오! 건배! – Scriptlabs

+1

그게 내가 할 일은 무엇입니까 :) – Ceg

0

<input> 필드가 라디오 버튼과 같은 일관된 이름 지정 체계를 갖도록 설정하십시오. 당신은 쉽게 클릭 된의 ID에 연결하여 위의 코드를 사용하여 바로 하나를 호출 할 수 있도록 텍스트 입력이 <input type="text" id="number-1text" /> 등과 같은 이름을 지정해야한다는 것 여기

$(":radio").on("click", function() { 

    var textInputName = $(this).id + "text"; 

    //Perform validation 

}); 

아이디어 : 그런 식으로 뭔가를 시도 라디오 버튼.

관련 문제