2013-10-20 29 views
0

我已經激活了我的js文件在我的Yii項目視圖中顯示文本框:如何隱藏或Yii中使用複選框的JavaScript

<?php 
/* Register javascript */ 
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . '/js/showHide.js'); 
?> 

仍然在我看來,我有一個名爲「tbo_sk」和文本框複選框命名爲「 nilaiblksk」

<?php echo $form->checkBox($model, 'tbo_sk'); ?> 
<div style="display: none"><?php echo $form->textField($model, 'nilaiblksk'); ?></div> 

我的問題是,我們如何讓JavaScript代碼在我showHide.js文件,以顯示文本框,每當我選中該複選框,如果不加以控制,否則隱藏文本字段?

在我的div標記中,我使用style =「display:none」來隱藏textField。

在此先感謝!

回答

2

最好是給你的DIV ID或類,而不是在jQuery的使用父():

<div id="hiddenDiv" style="display: none"><?php echo $form->textField($model, 'nilaiblksk'); ?></div> 

<script> 
$(document).ready(function(){ 
    $('#MODELNAME_tbo_sk').change(function(){ 
     $('#hiddenDiv').toggle(); // or do $('#MODELNAME_nilaiblksk').parent().toggle(); 
    }); 
}); 
</script> 
+0

安永感謝,就像一個魅力! 當時我認爲這是行不通的,直到意識到我沒有改變MODELNAME! hahah Thanks tinyByte! – JoenMarz

0

然後視圖文件添加以下代碼:

註冊文檔上的jQuery函數準備切換輸入:

$buttonToggler= <<<JS 
    toggleInput=function(src,inputName){ 
     if(src.checked){ 
     $(src.form[inputName]).removeProp('disabled'); 
     }else{ 
     $(src.form[inputName]).prop('disabled','disabled'); 
     } 
    } 
JS; 
Yii::app()->clientScript->registerScript('toggleFormInputs',$buttonToggler, CClientScript::POS_READY); 

Add功能複選框更改事件:

echo $form->checkBox($model,'tbo_sk', 
     array('onchange'=>'js:toggleInput(this,"ModelName[nilaiblksk]")')); 

echo $form->textField($model,"nilaiblksk"); 

無論您使用的是何種實際型號,您都必須替換實際型號名稱,例如「型號名稱[nilaiblksk]」,例如後置型號,它將爲「Post [nilaiblksk]」。

還有一件事,你必須改變toggleInput功能e.g如果你可能只想讓它只讀或添加刪除CSS類

+0

我在js的最後一行發現了一個錯誤: Yii :: app() - > clientScript-> registerScript('toggleFormInputs',$ buttonToggler,CClientScript :: POS_READY); 是不是應該放在視圖文件中? – JoenMarz

+0

以上所有代碼都會進入視圖文件,只是分開代碼塊來清除 – sakhunzai

+0

好的謝謝sakhunzai – JoenMarz

相關問題