2017-06-14 184 views
4

我们在结帐页面上遇到了IE 11和Safari用户的一些问题。我们销售3种不同类型的票务包。结账的形式(除了信用卡信息,联系方式)具有票券包像数量字段:IE 11和Safari上的自动填充/自动填充

qtyA1 
qtyA2 
qtyA3 
qtyA4 
qtyB1 
qtyB2 
qtyB3 
qtyC1 
qtyC2 

这里用户可以指定一个或多个他/她想要订票包。用户可以使用键盘输入许多票据包,也可以通过单击+和 - 按钮。每个领域都在HTML定义如下

<div class="input-group"> 
<div class="input-group-addon input-group-addon-button" data-controls="qtyA1" data-add="-1">-</div> 
<input type="text" min="0" max="9" maxlength="1" class="qty form-control input-group-button-input" autocomplete="false" name="qtyA1" id="qtyA1" data-ticket-type="A" data-price="10.00" data-ticket-qty="2" value=""> 
<div class="input-group-addon input-group-addon-button" data-controls="qtyA1" data-add="1">+</div> 

(有这样的9场,所以我不会在这里将其粘贴全部)。

过去2年结账工作正常。但有时候,平均每5k次订单一次,用户就会提交一份包含所有门票包选项的表单,然后声称这不是他/她打算订购的。我们的服务器收到带有此类数据的POST请求:

qtyA1=1 
qtyA2=1 
qtyA3=1 
qtyA4=1 
qtyB1=1 
qtyB2=1 
qtyB3=1 
qtyC1=1 
qtyC2=1 

每个票据包都有不同的票数和票价。门票价格较高,门票较多。所以最好订购1 x qtyA2比2 x qtyA1。通过订购更高票价的包装,您可以获得更多票数相同的价格或相同金额的门票。因此,立即订购所有选项毫无意义。

我们有一个自动填充检测脚本,它基于字段背景更改,但它只能在Chrome,Firefox和可能在大多数Safari浏览器中运行。

我不知道在IE中的任何自动填充功能(除了自动完成)。

一些我们在这个问题上的调查结果:

  • 使用IE 11和Safari浏览器只有客户有问题
  • 80%是55岁以上岁,60%是65岁以上
  • 60%是回头客,其中2/3已下订单数量相同
  • 80%用VISA支付
  • 几乎每个客户都下单一次提交,即他们的信用卡没有错误大多数情况下。
  • 客户
  • 11.8%使用的是IE 9-11
  • 31.7%使用的是Safari
  • 机会,这种事情发生在IE浏览器用户的0.038%
  • 机会,它发生在Safari浏览器用户是0.014%

我对什么可能导致问题的想法:

  • 在IE和(可能)Safari上未检测到自动填充。
  • 人们可能会在他们的浏览器中安装一些插件(一些间谍搜索工具栏在需要输入信用卡时与表单交互) - 不太可能,但您永远不知道。
  • 由于只有20%的顾客声称他们的订单,老年人在理解门票套餐方面存在困难。
  • 至于老人,他们设法下得很快(3-5分钟)。也许他们正在使用一些表格数据管理工具/浏览器插件?但我想老年人不会故意安装这样的东西。
  • JavaScript在客户的浏览器中被禁用,它阻止了自动填充检测。

The test checkout is available here

的问题是:是什么原因造成的表单字段与某些浏览器和如何防止它的人填补?

+1

你可以做一个小提琴 –

+0

@SagarV我已经改变了问题,添加链接到测试结账页面,它可以在这里http://checkout.salaciak.pl/ –

+1

'autocomplete'可以是'off'或“开”。您已将其定义为“false”。这可能是一个问题吗? https://www.w3schools.com/tags/att_input_autocomplete.asp – 31piy

回答

2

这看起来像是一个相当不错的错误。如果你发现它,我很自信你可以找到一些解决方法。

我在这些情况下,做的是:

1)抢了一个月BrowserStack订阅,并开始测试的地狱它来重现问题

我敢肯定,你可能已经检查但这里还有一些其他的事情:

a)再次寻找计算算法中的一些缺陷,例如意外输出。

二)确保我的计算不是一个意外的事件触发JS

三)我不是读书的字段值太早:

例如,当用户做出选择,尽量不直接运行你的计算和动态更新的建议,但增加了一个窗口超时做到所有现场输入设置后,才计算:

window.setTimeout(function() { handlevalues(); updateSuggestions();}, 500);

我这样经常看到这最后一种情况en,因为有些浏览器因缓存机制而无法提供无效值。

+1

我并不认为它是一个正确的答案,因为我们需要测试所有这些建议,但是我将其授予研究工作。谢谢! –