【问题标题】:Cakephp 3.6.14: Enable button if selection input has valueCakephp 3.6.14:如果选择输入有值,则启用按钮
【发布时间】:2019-01-29 09:52:25
【问题描述】:

我的代码中有一个选择控件和 2 个提交按钮。如果在选择框中未进行任何选择,如何隐藏或禁用其中一个按钮?

代码如下:

//selection box
echo $this->Form->control('assigned_to',['options' => $usersTo, 'empty' => true, 'value' => $selectedUser]);

//submit buttons

<?= $this->Form->submit(__('Direct Assign'), ['name' => 'btn', 'class' => 'button']) ?> 
//this must be disabled or hidden if selection box is empty


<?= $this->Form->submit(__('Save'), ['name' => 'btn', 'class' => 'button']) ?>

【问题讨论】:

  • 用js/jquery?如果选中则启用,否则禁用按钮
  • @Salines 可以提供代码吗?

标签: javascript php jquery cakephp cakephp-3.x


【解决方案1】:

您可以使用 javascript 来做同样的事情:

//selection box
echo $this->Form->control('assigned_to',['options' => $usersTo, 'empty' => true, 'value' => $selectedUser, 'id' => 'assigned_to']);

//submit buttons

<?= $this->Form->submit(__('Direct Assign'), ['name' => 'btn', 'class' => 'button', 'id' => 'direct_assign']) ?> 
//this must be disabled or hidden if selection box is empty


<?= $this->Form->submit(__('Save'), ['name' => 'btn', 'class' => 'button']) ?>


    $(document).ready(function(){
// check the value of assign selection box when document is ready
     let assignedValue = $("#assigned_to").val(); // get the value of assign selection box
      if(assignedValue == '') {
       $("#direct_assign").attr('disabled', true) // to disable direct assign button 
      }
    })

希望这会有所帮助!

【讨论】:

    【解决方案2】:
    1. 首先,你不应该使用Form->submit,表单有一个提交 按钮,我认为您应该改用 postlink。也改变 为按钮命名并创建不同的 ID。
    2. 其次,您可以使用 jquery 执行此操作,您将聆听您的选择 控制更改事件并禁用和启用或做你想做的事 到其他控件
    <?php
    $this->start("scriptBottom");
    ?>
    <script>
    $(document).ready(function () {
         $("assigned-to").change(function ()
         {
              var selected = $("#assigned-to option:selected").text();
              if(selected == 'OPTION 1')
              {
                     $("#btn").prop('disabled');
              }
              //do other things
    }
    });
    </script>
    
    <?php
    $this->end();
    echo $this->fetch('scriptBottom');
    ?>
    

    【讨论】:

    • 您能否详细介绍一下此代码示例,例如检查所选内容的值?
    • var selected = $("#assigned-to option:selected").text();这是如何从控件中获取当前选定的项目。请再次检查修改后的示例。
    猜你喜欢
    • 2017-09-02
    • 1970-01-01
    • 2015-08-01
    • 2020-11-08
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 2023-03-21
    • 2021-03-23
    相关资源
    最近更新 更多