【问题标题】:How can you make a Data Bind attribute case insensitive?如何使数据绑定属性不区分大小写?
【发布时间】:2020-06-09 18:47:55
【问题描述】:

代码使特定行可见:data-bind="visible: email() == 'first.last@gmail.com'"

元素/输入 ID 为:电子邮件 设置规则:first.last@gmail.com

当我在文本字段中输入 first.last@gmail.com 时,会出现新行,但是,当我输入 First.Last@gmail.com 时,它不会出现,因为代码区分大小写 (如您所见,F 和 L 现在都是大写的)。有什么我可以添加到它以使其不区分大小写的吗?

Example of the case sensitive email entered. Does not make the next row visible

Example of the email working when case is lowercase. Next row becomes visible

【问题讨论】:

  • 好吧,当您使用 equal value and equal type (==) 并显式输入字符串 ('first.last@gmail.com') 时,布尔表达式仅在用户输入正是该特定字符串时才会显示为真.因此,在您的一行代码中,您只考虑了一个字符串输入;其他一切都是错误的。你到底想不允许什么?您是否希望用户遵循确切的格式,无论他们的名字和区分大小写如何?格式,例如,保留名字和姓氏之间的句点?
  • @AttemptedMastery,我的意思是 F 和 L 都是大写的,并且数据绑定规则仅在显示行时才接受它。有什么我可以添加到数据绑定中以使其不区分大小写的吗?我添加了图片以显示我所指的内容。
  • 我的问题是,为什么数据绑定使用户只使用某种情况?用户应该能够选择区分大小写。现在,在您的代码中,您的工作是确保所有用户名的大小写敏感度一致,以便您可以轻松地使用它们。惯例是使用小写字母 (.toLowerCase()),因此敏感性不是问题。另外,我想说的是你实际上只接受这个字符串:“first.last@gmail.com'”。在数以百万计的组合中,您只允许使用一个用户名。
  • 这样想吧;使用您当前的代码,您只有一个选项可供选择,即'first.last@gmail.com'。我不确定你在做什么,但如果你试图控制表单中的输入,设置严格的字符串条件可能不是你或潜在用户想要的......
  • @AttemptedMastery 感谢您抽出宝贵时间回复您的意见。我的意图是将其限制为一封电子邮件。在特定情况下,用户的电子邮件需要打开一个新行。正在添加此数据绑定以隐藏该行,直到输入电子邮件。如果你把他们的电子邮件全小写,它工作得很好,但如果填写表格的人使用大写字母,数据绑定就会失败。这更有意义吗?对于我意识到我没有很好地解释我的问题时的困惑,我深表歉意。

标签: javascript data-binding


【解决方案1】:

类似这样的:

data-bind="visible: email() === 'first.last@gmail.com'.toLowerCase()

这样,您在验证电子邮件时无需担心用户选择的敏感度。可能是这样的:'fIrSt.lAsT@gMaIl.com',但由于您的代码将其设为小写,您现在只需检查用户名是否实际存在并与email() 函数正确匹配。

现在请记住,您的问题对我(以及其他所有人)来说有很多空白。

另外,在您的email() 函数中,您应该确保将结果以小写形式传递给这样的:

function email(){
    return email.toLowerCase()
}

现在,当你去检查的时候,一切都会被统一装箱,准备好了。

顺便说一句,如果您发布更多代码会有所帮助:D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    相关资源
    最近更新 更多