【问题标题】:how to Hide or Show textField using checkBox in Yii javascript如何在 Yii javascript 中使用复选框隐藏或显示文本字段
【发布时间】:2013-10-20 02:52:19
【问题描述】:

我已经在 Yii 项目视图中激活了我的 js 文件:

<?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>

我的问题是,我们如何在我的 showHide.js 文件中制作 javascript 代码,以便在我选中复选框时显示 textField,否则如果未选中则隐藏 textField?

在我的 div 标签中,我使用 style="display: none" 来隐藏 textField。

提前致谢!

【问题讨论】:

    标签: javascript php jquery checkbox yii


    【解决方案1】:

    最好给你的 div 一个 ID 或 Class,而不是在 jQuery 中使用 parent():

    <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>
    

    【讨论】:

    • 谢谢,工作就像一个魅力!那时我认为这行不通,直到意识到我没有更改 MODELNAME!哈哈谢谢 tinyByte!
    【解决方案2】:

    然后在视图文件中添加如下代码:

    在准备切换输入的文档上注册一个 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);
    

    为复选框更改事件添加功能:

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

    您必须替换实际模型名称,例如“ModelName[nilaiblksk]”,例如对于后期模型,它将是“Post[nilaiblksk]”,无论您使用的是什么实际模型。

    还有一件事,您必须更改 toggleInput 功能,例如,如果您只想将其设为只读或添加删除 css 类

    【讨论】:

    • 在js的最后一行发现错误:Yii::app()->clientScript->registerScript('toggleFormInputs',$buttonToggler, CClientScript::POS_READY);那不应该放在视图文件中吗?
    • 以上所有代码都会进入视图文件,只是将代码块分开以使其清晰
    猜你喜欢
    • 2019-08-14
    • 1970-01-01
    • 2016-03-13
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多