You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何获取Prompt对话框值并提交表单?

问题原因

你遇到的问题是:设置card变量后立刻调用$el.submit(),此时Alpine.js的响应式更新还没来得及把新值同步到隐藏输入框,表单提交的仍是初始的空值。

解决方案

以下两种方式都能解决这个问题,按需选择即可:

方案一:直接操作DOM设置输入框值(更直接)

跳过响应式绑定的延迟,手动获取隐藏输入框并设置其值,再提交表单:

<form x-data="{ card: '' }" x-on:submit.prevent="
    const cardInput = $el.querySelector('input[name=tessera]');
    const card = prompt('Insert card');
    if(card !== null) {
        cardInput.value = card;
        $el.submit();
    }
" method="POST" action="{{ route('member.store', ['identity' => $identity->id]) }}">
    @csrf
    <input type="hidden" name="tessera"/>
    <button type="submit"><img class="object-scale-down h-6 ml-5" src="{{asset('images/card_add.png')}}" title="Aggiungi tessera" alt="Aggiungi tessera"></button>
</form>

方案二:用$nextTick等待DOM更新(保留响应式绑定)

利用Alpine的$nextTick方法,等待响应式值同步到DOM后再提交表单:

<form x-data="{ card: '' }" x-on:submit.prevent="
    const card = prompt('Insert card');
    if(card !== null) {
        this.card = card;
        $nextTick(() => {
            $el.submit();
        });
    }
" method="POST" action="{{ route('member.store', ['identity' => $identity->id]) }}">
    @csrf
    <input type="hidden" x-bind:value="card" name="tessera"/>
    <button type="submit"><img class="object-scale-down h-6 ml-5" src="{{asset('images/card_add.png')}}" title="Aggiungi tessera" alt="Aggiungi tessera"></button>
</form>

内容的提问来源于stack exchange,提问作者luca lisotti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 21:54:52