【发布时间】:2021-03-05 07:51:15
【问题描述】:
我正在尝试将backAfterSaveStatus 值绑定到隐藏输入,但由于某种原因,然后表单被提交backAfterSave 值为空。
之后我返回并再次提交表单 - backAfterSave 值为 1。问题出在哪里?
我在没有prevent 和submit() 的情况下尝试了同样的事情,但它仍然无法正常工作。我还用x-text 转储了div,并且代码在表单提交之前隐藏了输入1。我做错了什么?
<form action="<...>" method="post">
<div x-data="{
backAfterSaveStatus: '',
backAfterSave () {
this.backAfterSaveStatus = '1';
document.querySelector('form.withBackAfterSave').submit();
}
}">
<input name="backAfterSave" :value="backAfterSaveStatus">
<div>
<span>
<button x-on:click.prevent="backAfterSave()" type="submit">
Save & back
</button>
</span>
<span>
<button type="submit">
Save
</button>
</span>
</div>
</div>
</form>
我想要与以下相同的结果:
let buttonBackAfterSave = document.getElementById('button-back-after-save');
if (buttonBackAfterSave) {
buttonBackAfterSave.addEventListener('click', () => document.getElementById('input-back-after-save').value = 1);
}
【问题讨论】:
-
在
submit()方法中调用backAfterSaveStatus = 0之后,不需要重置backAfterSaveStatus = 0的值吗 -
我也试过了,但主要问题是表单提交后的第一次值为空。
-
@keizah 这个问题是 alpine/php 特有的还是也可以使用 JS 来解决?所以要恢复,当表单提交时,只有提交后,你希望能够点击按钮保存并返回并在输入字段中显示1,对吗?
-
我复制了这个问题并使用
$nextTickmagic property解决了它
标签: javascript html laravel alpine.js