我们在结帐页面上遇到了IE 11和Safari用户的一些问题。我们正在销售3种不同类型的票包。结帐表格(除了信用卡信息,联系信息)还有票据包数量字段,如:
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个这样的字段,所以我不会在这里粘贴它们。)
过去两年的结账工作正常。但有时,平均每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中的任何自动填充功能(除了自动完成)。
我们对该问题的一些发现:
我对可能导致问题的原因的看法:
The test checkout is available here
问题是:是什么原因导致表单字段在某些浏览器上填充,以及如何防止它?
答案 0 :(得分:2)
这看起来像是一个非常好的bug。如果你找到它,我很有信心你可以找到一些解决方法。
在这些情况下我做的是:
1)抓住一个月的BrowserStack订阅并开始测试它的地狱来重现问题
我很确定你可能已经检查了,但我还有其他一些事情:
a)再次看一下计算算法中的一些缺陷,就像意外输入的意外输出一样。
b)确保我的计算不是由js
中的意外事件触发的c)我不是太早阅读字段值:
例如,当用户进行选择时,尽量不直接运行计算并动态更新建议,但只有在设置了所有字段输入后才添加窗口超时以进行计算:
window.setTimeout(function() { handlevalues(); updateSuggestions();}, 500);
我经常看到这最后一个案例,因为有些浏览器由于其缓存机制而在现场提供无效值,而不是。