Chrome 信用卡号码的正确输入类型是什么?

ws51t4hk  于 12个月前  发布在  Go
关注(0)|答案(3)|浏览(120)

**TLDR:**哪种输入类型可以使用移动的数字键盘,并使用插入的空格和CVV和信用卡输入的最大限制实现屏蔽,例如:

在构建表单时,我看到了围绕信用卡正确输入类型的不同程度的一致性。以下是我发现的每种类型的优点和缺点:

type=text

  • 能够使用各种库(如cleave.js或设置maxLength属性)轻松屏蔽
  • 移动的用户不会收到数字键盘,除非将范围设置为[0-9](只有iOS用户将获得此体验,Android用户将获得全键盘)
    type=number
  • 在iOS和Android上显示正确的键盘,但可以输入不需要的字符,并且不能设置maxLength。Min和Max不限制用户输入超过16个字符,但当超过最大值时会提供错误消息。* 注意,由于删除了前导0,因此基本上排除了这种输入类型。(CVV不可接受)
    type=tel
  • 能够正确地屏蔽,并在各地使用,但可能会对辅助功能程序和自动填充程序产生未知的影响。如果有人能澄清使用此输入类型的潜在副作用,那就太棒了!

这些都是我想到的类型。如果有人有其他推荐,请告诉我!

wxclj1h5

wxclj1h51#

HTML

如果你想严格地用HTML来做这件事,我相信下面的内容会让你尽可能地接近:

<form>
  <label for="ccn">Credit Card Number:</label>
  <input id="ccn" type="tel" inputmode="numeric" pattern="[0-9\s]{13,19}" 
         autocomplete="cc-number" maxlength="19" 
         placeholder="xxxx xxxx xxxx xxxx" required>

  <button>Submit</button>
</form>

字符串

  • inputmode设置键盘类型(在本例中为数字)
  • pattern支持验证(在本例中,验证长度为13到19之间的数字和空格),并且它有助于尚未支持inputmode的浏览器的键盘类型
  • autocomplete告诉浏览器应该自动完成什么(在本例中,是信用卡号)
  • maxLength防止用户输入超过设置的字符数(在本例中为19,包括数字和空格)
  • placeholder给用户一个例子(格式提示)

JavaScript

对于一个更健壮的解决方案,JavaScript将是必需的。与其推出自己的解决方案,最好使用经过战斗测试的库。Cleave.js(如您所提到的)是一个流行的选择。

weylhg0b

weylhg0b2#

我看到在很多地方使用type="tel",原因你提到。
我不会推荐type="number",因为那样你就必须摆弄in/decrement arrows等。从某种Angular 来看,它不是一个“数字”,就我们通常用数字(数学)做的事情而言,请参阅CSS技巧论坛上的这篇评论。
如何强制数字键盘的另一个技巧是使用pattern="[0-9]*".这个should work on iOS only.为了使它在Android上工作,以及,你必须将它与type="tel"合并.

9udxz4iz

9udxz4iz3#

有一个属性inputmode就是为此而设计的,它还没有实现(实际上在HTML 5.2中已被弃用),但已经做了一些工作(FF/Chrome)。
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input
请参阅此讨论:https://github.com/whatwg/html/issues/3290
现在,将autocomplete属性设置为正确的值:https://developers.google.com/web/updates/2015/06/checkout-faster-with-autofill
或者像你现在使用的一样,用掩码实现一个自定义的输入。

相关问题