【问题标题】:How to Toggle text using Livewire or AlpineJs when according to checkbox status如何根据复选框状态使用 Livewire 或 AlpineJs 切换文本
【发布时间】:2022-02-11 03:28:52
【问题描述】:

我想做的是:

  • 选中复选框时 ---> 将文本值更改为“是”并将其值存储到组件变量中
  • 未选中复选框时 ---> 将文本值更改为“否”并将其值存储到组件变量中

以下是我例外的示例,但此示例使用 Javascript。 我想使用 livewire 或/和 alpinejs 实现相同的行为。

function myFunction() {
  var checkBox = document.getElementById("toogleA");
  var text = document.getElementById("text");
  if (checkBox.checked == true) {
    document.getElementById("text").innerHTML = "YES";
  } else {
    document.getElementById("text").innerHTML = "NO";
  }
}
/* Toggle A */

input:checked~.dot {
  transform: translateX(100%);
  background-color: #7456e3;
}


/* Toggle B */

input:checked~.dot {
  transform: translateX(100%);
  background-color: #7456e3;
}
<link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet" />



<!--Start toggle button-->
<div class="flex items-center justify-center w-auto mb-5">
  <!-- label -->
  <label for="toogleA" class="flex items-center cursor-pointer">
                    <!-- toggle -->
                    <div class="relative">
                        <!-- input -->
                        <input wire:model="person" id="toogleA" onclick="myFunction()" type="checkbox" name="test" value="person" class="sr-only" />
                        <!-- line -->
                        <div class="w-10 h-4 bg-gray-400 rounded-full shadow-inner"></div>
                        <!-- dot -->
                        <div class="absolute w-6 h-6 transition bg-white rounded-full shadow dot -left-1 -top-1"></div>
                    </div>
                    
                <div id="text" class="ml-3 font-medium text-gray-700">NON </div>

            </div>

        </div>

【问题讨论】:

    标签: laravel-livewire alpine.js


    【解决方案1】:

    您只需使用 Livewire 即可实现此目的。

    组件

    class YourComponent extends Component
    {
        public bool $toggleA = false;
    
        public function render()
        {
            return view('livewire.your-component');
        }
    }
    

    组件视图

    <label for="toggleA">Toggle</label>
    <input wire:click="$toggle('toggleA')" type="checkbox" id="toggleA" />
    
    <p>{{ $toggleA ? 'Yes' : 'No' }}</p>
    

    $toggle 函数是 Livewire 中的一个特殊助手,专门用于切换 boolean 属性的值。

    【讨论】:

    • 实际上得到一个这样的错误:Property [$$toggle('toggleA')] not found on component: [make-reservation]
    • 检查你的语法。
    • 将wire:model="$toggle('toggleA')" 改为wire:click="$toggle('toggleA')" 后生效
    • 哈!接得好。还有我告诉你检查你的语法。 #facepalm
    猜你喜欢
    • 2011-05-22
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多