2013-05-07 43 views
1

美好的一天。我的問題是我有一個dropDownlist有三個選項:A,B,C。我需要做的是顯示一個文本字段取決於用戶選擇。 用戶選擇B =>它會顯示文本字段BB(應該是必需的而不是空的) 用戶選擇了C = >它會顯示文本字段CC(這應該是必需的,而不是空的)根據下拉列表值動態顯示所需文本字段

任何人都可以請幫助我嗎?謝謝。

編輯:它現在工作。現在唯一的問題是,當我將選定的文本字段留空並顯示錯誤時,顯示的文本字段(與下拉列表的值相關的字段)消失或返回狀態顯示:隱藏。這發生在「文本字段不能爲空」錯誤消息之後。 dropdownList的初始選定值仍然存在,並且仍處於焦點狀態,但文本字段消失。

這裏是我的修訂碼:

VIEW:

<div class="row"> 
    <?php echo $form->labelEx($model,'org_type'); ?> 
    <?php echo $form->dropDownList($model,'org_type', $model::getOrgType(), array('prompt'=>'', 'id'=>'orgType')); ?> 
    <?php echo $form->error($model,'org_type'); ?> 
</div> 

<div class="row" style="display:none" id="sec"> 
    <?php echo $form->labelEx($model,'sec_ref'); ?> 
    <?php echo $form->textField($model,'sec_ref', array('id'=>'secField')); ?> 
    <?php echo $form->error($model,'sec_ref'); ?> 
</div> 

<div class="row" style="display:none" id="dti"> 
    <?php echo $form->labelEx($model,'dti_ref'); ?> 
    <?php echo $form->textField($model,'dti_ref', array('id'=>'dtiField')); ?> 
    <?php echo $form->error($model,'dti_ref'); ?> 
</div> 

<div class="row" style="display:none" id="cda"> 
    <?php echo $form->labelEx($model,'cda_ref'); ?> 
    <?php echo $form->textField($model,'cda_ref', array('id'=>'cdaField')); ?> 
    <?php echo $form->error($model,'cda_ref'); ?> 
</div> 

MODEL:

public function addCustomError($attribute, $error) { 
    $this->customErrors[] = array($attribute, $error); 
} 

/** 
*/ 
protected function beforeValidate() { 
    $r = parent::beforeValidate(); 

    if ($this->org_type == 'Single') {//this is the checkbox 

     $this->validatorList->add(CValidator::createValidator('required',$this,'dti_ref',array())); 

    } 

    if ($this->org_type == 'Partnership') {//this is the checkbox 

     $this->validatorList->add(CValidator::createValidator('required',$this,'sec_ref',array())); 

    } 

    if ($this->org_type == 'Corporation') {//this is the checkbox 

     $this->validatorList->add(CValidator::createValidator('required',$this,'sec_ref',array())); 

    } 

    if ($this->org_type == 'Cooperative') {//this is the checkbox 

     $this->validatorList->add(CValidator::createValidator('required',$this,'cda_ref',array())); 

    } 
    foreach ($this->customErrors as $param) { 
     $this->addError($param[0], $param[1]); 
    } 
    return $r; 
} 

的Javascript上查看:

<script> 
"$('#orgType').change(function(){ 
if($('#orgType').val() == 'Single') 
{ 
    $('#dti').show(); 
    $('#dtiField').addClass('required'); 
    $('#cda').hide(); 
    $('#sec').hide(); 

} 
if(($('#orgType').val() == 'Partnership') || ($('#orgType').val() == 'Corporation')) 
{ 
    $('#sec').show(); 
    $('#secField').addClass('required'); 
    $('#dti').hide(); 
    $('#cda').hide(); 
} 
if($('#orgType').val() == 'Cooperative') 
{ 
    $('#cda').show(); 
    $('#cdaField').addClass('required'); 
    $('#dti').hide(); 
    $('#sec').hide(); 
} 
return false; 
})"; 

+0

那你實際嘗試? – soju 2013-05-07 07:49:05

+0

我已經可以顯示/隱藏潛水取決於下拉列表的值,但我不知道如何使顯示div所需的元素。 – 2013-05-07 09:04:14

+0

請添加您的模特規則和檢視代碼 – soju 2013-05-07 09:05:19

回答

0

你可以試試這個:

下拉的每一個變化的情況下,您可以設置值提交的文本後..

+0

我已經這樣做了。我只剩下一個問題。你能檢查我的更新代碼,看看你能幫助我嗎?謝謝。 – 2013-05-07 11:51:41