1

我有一个 CC 更新信息表。只显示卡号的最后 4 位,其余部分用星号表示 ( * **** *1234)。

当有人进入并且只需要更新具有相同号码的卡上的到期日期时,我们必须要求他们也更新卡,因为加星标的号码将提交给我们使用的 API,并返回为一个错误的 CC 号码。API 要求提交两组数字(卡号和有效期)。最简单的解决方案似乎是检查卡号是否被星号标记。

如何使用 javascript/jQuery检查前 12 个数字是否已加星标( * ** * )?

另外,如果您知道更好的解决方案,请随时提出不同的方法来处理这个问题。

我对 jQuery 验证足够熟悉,但从未见过可以做到这一点的东西。

提前致谢,

史蒂文

4

3 回答 3

4

如果您将数据存储在数据库中,那么当新的 exp 数据到达时,您不能在数据库中查找 CC 编号并沿此方式传递吗?至于您的其他问题,如果您的表单确实通过星号,只需查找它们:

<cfif find(ccnum,"*")>
   you have stars so you look up the CC before passing it
<cfelseif isvalid("CC", CCNUM)>
  you have a valid cc num... so combine it with the other data and submit it.
<cfelse>
  you have something unexpected send an error back to the user
</cfif>
于 2013-09-04T16:39:46.970 回答
2

不花哨,但你可以看看字符串。

客户端:

if(ccNum.substr(0,11) == '************'){
    // do whatever
}

冷融合侧:

if(left(ccNumber,12) == '************'){
    // do whatever
}

或基于标签

<cfif left(ccNumber,12) eq '************'>
    <!--- do whatever --->
</cfif>
于 2013-09-04T16:43:00.610 回答
0

我最初建议在执行更新 SQL / 事务时忽略表单中的 CC 编号字段。仅仅因为它是由用户提供的,并不意味着你必须使用它。

但这有一个问题——它假设用户永远不会用不同的信用卡更新信用卡信息——我认为“只是”假设是一件坏事。

如果您检查信用卡号中“*”字符的提交值怎么样?

如果有“*”,他们并没有改变最初保存的 CC 号码,因此这是一个“安全(r)赌注”,现在您可以忽略该号码。

如果没有“*” - 他们提供了一个 CC 号码 - 验证它/重新保存它。即使它与以前的卡号相同 - 只需假设他们输入了一个完全不同的号码并执行您所需的 CC 号码验证,然后保存所有表单数据。

就像是;

<cfif form.ccNumber contains "*">
    <!--- disregard the CC number it is the same as the old one --->
    <!--- do other form field validation --->
    <!--- save all OTHER form fields, only / do NOT save the CC number --->
<cfelse>
    <!--- we have no "*" in the CC number - validate the card number --->
    <!--- jQuery has credit card validation in its validation plugin. --->
    <!--- do other form field validation --->
    <!--- save ALL form fields --->
</cfif>
于 2013-09-05T05:28:54.367 回答