Svelte - on:change 输入处理程序仅在模糊事件后触发

Svelte - on:change handler on input fires only after blur event

我构建了一个自定义输入字段:

<div class="field-wrapper">
  <input
    title={passwordError[$language]}
    name="password"
    on:change={e => updatePasswordError(password.length < 8)}
    bind:value={password}
    placeholder="Password"
    type="password" />
  <div style={`opacity: ${passwordError.show ? 1 : 0}`}>
    {passwordError[$language]}
  </div>
</div>

密码变量在文件顶部以空值开始。我的问题是 on:change 处理程序不会对每个新角色都触发,而只会对第一个角色和我离开场地后触发(因此在 on blur 事件上)。那我做错了什么?我的目标是错误消息在长度正确后消失。

感谢您的帮助。

试试这个:

<div class="field-wrapper">
  <input
    title={passwordError[$language]}
    name="password"
    on:keyup={e => updatePasswordError(password.length < 8)}
    bind:value={password}
    placeholder="Password"
    type="password" />
  <div style={`opacity: ${passwordError.show ? 1 : 0}`}>
    {passwordError[$language]}
  </div>
</div>

此处的输入应在您每次在此输入内按任意键时调用该函数

你应该使用 reactive statements 以防你想在值更改时调用函数。

<script>
$:updatePasswordError(password.length < 8)
</script>