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

SMUI + SvelteKit表单提交时Textfield值始终为null的问题

问题

刚上手SMUI和SvelteKit,在登录表单里使用Textfield组件时,提交后无法获取输入值。

原始表单代码:

<form method="post">
    <Textfield variant="outlined" bind:value={username} label="Username"></Textfield>    
    <Textfield type="password" variant="outlined" bind:value={password} label="Password">
    <Button type="submit">Login</Button>
</form>

对应的页面处理代码:

export const actions = {
    default: async ({ cookies, request }) => {
        const data = await request.formData()
        const username = data.get('username')
        const password = data.get('password')
    }
}

提交后username和password均为null。添加隐藏字段可正常获取值,但没必要;尝试给Textfield添加name属性仍无效,请问哪里操作有误?

解决方法
  • SMUI的Textfield组件不会自动将内部原生input与表单绑定,直接在Textfield上添加name属性不生效,需通过input$name语法将属性传递给组件内部的input元素:
    <Textfield variant="outlined" bind:value={username} label="Username" input$name="username"></Textfield>    
    <Textfield type="password" variant="outlined" bind:value={password} label="Password" input$name="password"></Textfield>
    
  • 原理是SMUI组件通过$语法传递属性给内部原生元素,input$name会把name属性绑定到Textfield内部的input标签上,这样表单提交时就能正确收集对应字段的值,无需额外添加隐藏字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:05:21