验证Elm和Elm表单中的两个字段
我使用的是Elm表单,但我无法确定两个字段的验证,我想验证密码和密码确认字段是否匹配 这就是我到目前为止所做的:验证Elm和Elm表单中的两个字段,elm,Elm,我使用的是Elm表单,但我无法确定两个字段的验证,我想验证密码和密码确认字段是否匹配 这就是我到目前为止所做的: validate : Validation String RegUser validate = map6 RegUser (field "email" email) (field "password" (string |> andThen nonEmpty)) (field "passwordConfirmation" (
validate : Validation String RegUser
validate =
map6 RegUser
(field "email" email)
(field "password" (string |> andThen nonEmpty))
(field "passwordConfirmation" (string |> andThen nonEmpty))
(field "firstName" (string |> defaultValue ""))
(field "lastName" (string |> defaultValue ""))
(field "companyName" (string |> defaultValue ""))
整个代码:
感谢您的帮助。每当您看到公开函数、成功函数和失败函数的包时,这就很好地表明您可以剥离该值以检查其值并将其与另一个函数绑定。在这种情况下,我们可以使用andThen两次来构建验证函数,该函数可以查看两个命名字段的内部,并检查它们是否匹配: 匹配字段:字符串->字符串->验证字符串 匹配字段主字段确认字段= 字段主字段字符串 |>然后\masterVal->字段确认字段字符串 |>然后\confirmVal-> 如果masterVal==confirmVal,则 继承马斯特瓦尔 其他的 失败自定义错误值不匹配 然后,您可以在整体验证功能中使用它,如下所示: 验证:验证字符串调节器 证实= map6调节器 现场电子邮件 matchingFields密码密码确认|>,然后为非空 字段密码确认字符串|>第二个非空 ...
该解决方案接近乍得提供的解决方案,其依据是:
validate : Validation TranslationId RegUser
validate =
map6 RegUser
(field "email" email)
(field "password" (string |> andThen nonEmpty))
((field "password" string) |> andThen validateConfirmation)
(field "firstName" (string |> defaultValue ""))
(field "lastName" (string |> defaultValue ""))
(field "companyName" (string |> defaultValue ""))
validateConfirmation : String -> Validation TranslationId String
validateConfirmation password =
field "passwordConfirmation"
(string
|> andThen
(\confirmation ->
if password == confirmation then
succeed confirmation
else
fail (customError PasswordNotMatch)
)
)