javascript - 如何在显示前更改 x-bind:value - Alpine JS
问题描述
<div x-data="{ date : false }">
<input type="date" name="dateOne" id="dateOne" x-model="date">
<input type="date" name="dateTwo" id="dateTwo" x-bind:value="date">
</div>
现在,我该如何更改#dateTwo,所以一旦#dateOne 发生更改,我会提前一天显示#dateTwo,我已经知道要创建一天并在JavaScript 中再添加一个。但我的麻烦在于如何将它与 Alpine JS 粘合在一起的逻辑。
场景:有一个事件有一个开始和一个结束日期,但我想强制使用至少提前一天选择。所以我的想法是这样的,只要用户在第一个输入上选择一天,第二个输入上的 x-bind 就会添加并显示前一天
提前致谢。
解决方案
模型/数据缺少几个值,我的方法与您的方法有些不同,我认为x-model
第一次约会不需要,在第二次约会中使用更有意义。以下是针对您的用例的快速而肮脏的解决方案:
<div x-data="{
dateStart: null,
dateEnd: null,
initEndDate: function(dateStartInputValue) {
const selectedDate = new Date(dateStartInputValue);
const dateEndInitValue = selectedDate.setDate(selectedDate.getDate() + 1);
this.dateEnd = new Date(dateEndInitValue).toISOString().split('T')[0];
}
}">
<label for="start">
Start date:
<input
name="dateStart"
type="date"
@change="dateStart = event.target.value; initEndDate(event.target.value)"
/>
</label>
<label for="dateEnd" x-show="dateStart">
– End date:
<input
name="dateStart"
type="date"
x-model="dateEnd"
@change="dateEnd = event.target.value;"
/>
</label>
</div>
这是沙箱中的代码。
祝你好运!
推荐阅读
- javascript - 使用 onchange 函数获取复选框值
- c - Fopen 无法从命令行读取
- python - 如何在相似列值上比较两个不同的数据框并将值放入其他数据框
- awk - 复制行 2 次并从行到列转置
- c - printf 在调用通过引用传递变量的函数时发出警告
- vuejs2 - `apollo-link-state` 和 `vuex`,当我使用 `vue-apollo` 时,我应该使用哪一个来进行状态管理?
- c# - 防止对php登录系统的恶意攻击
- spring-mvc - 如何从 jsp 的下拉菜单中获取多个选定的值并在控制器方法中使用它
- c# - 将字节数组转换为一定长度的数组段
- amazon-web-services - s3api - 按大小查询似乎不起作用