目前,我使用一系列实用函数以及SvelteKit $
操作符来确定表单是否有效,如下所示:
<script lang="ts">
const required = (str: string) => str.length < 1;
const length = (str: string, minLength: number, maxLength: number) => str.length < minLength || str.length >= maxLength;
$: errors = {
name:
required(fields.name) ? "Name is a required field." :
length(fields.name, 3, 5) ? "Must be between 3-5 chars." : ""
}
$: valid = !errors.name;
const onSubmit = () => {
if (valid) {
// ...
}
}
</script>
我的问题是:这是验证字段的有效方法吗?如果我有很多字段,更改会重新计算 * 整个 * errors
对象,还是只计算必填字段?
1条答案
按热度按时间kqqjbcuj1#
使用本地验证怎么样?
如果你有更多的定制,也有一些函数。
setCustomValidity
-指定任何错误消息,通过设置''
清除,应在任何输入/变更时完成。reportValidity
-手动报告验证错误(存在于输入和表单中)。checkValidity
-获取表单/输入是否有效,而不报告错误。输入上还有一些属性,它们会向您提供消息(
validationMessage
)或详细状态,其中包含描述错误的各种标志(validity
)。要输出本地验证消息而不是弹出窗口,可以使用
invalid
事件。如果您的结构是刚性的,则可以向输入添加一个操作,以便在其下一个同级中自动输出错误:REPL
这只会在用户试图提交表单时显示错误,这也是我所推荐的。在用户甚至还没有写完的时候斥责他们是不礼貌的。
如果DOM结构不是那么严格,可以使用
bind:this
来获取元素引用,或者使用类似data-
的属性来将元素彼此关联。它也可以用来提取一些东西来分离组件。动作本身可以被提取到任何JS文件中。