Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery替换除最后四位数字以外的CC编号_Javascript_Jquery_Replace - Fatal编程技术网

Javascript JQuery替换除最后四位数字以外的CC编号

Javascript JQuery替换除最后四位数字以外的CC编号,javascript,jquery,replace,Javascript,Jquery,Replace,我有一个div,我需要去掉除最后四个字符以外的所有字符。我目前正在使用replaceWith,但它取代了整个东西 这是我的 <div class="field-name-field-credit-card">1111111111111111</div> $(".field-name-field-credit-card").replaceWith("xxxx xxxx xxxx xxxx"); 1111111 $(“.field name字段信用卡”)。替换为(“xxx

我有一个div,我需要去掉除最后四个字符以外的所有字符。我目前正在使用replaceWith,但它取代了整个东西

这是我的

<div class="field-name-field-credit-card">1111111111111111</div>

$(".field-name-field-credit-card").replaceWith("xxxx xxxx xxxx xxxx");
1111111
$(“.field name字段信用卡”)。替换为(“xxxx xxxx xxxx”);
我的结果呢

<div class="field-name-field-credit-card">xxxx xxxx xxxx xxxx</div>
xxxx xxxx xxxx xxxx
但我希望它是:

<div class="field-name-field-credit-card">xxxx xxxx xxxx 1111</div>
xxxx xxxx xxxx 1111

我为您制作了一个正则表达式,并更新了您的:

但是我必须同意-不要掩盖信用卡客户端

如果你真的想屏蔽客户端,这行难看的代码就可以了


它所做的是用当前元素的文本替换当前元素的文本,通过带有
replace
的正则表达式运行。正则表达式查找12位数字,然后存储接下来的4位数字,并用“x”替换16位数字的字符串,后面是它保存的最后4位数字。

虽然看起来可能是通过纯文本将CC从服务器传递到客户端,但这并不好,但我可以想到为什么在客户端屏蔽CC是一个好主意,下面是:

你在网上为朋友或爱人订购礼物,可能是因为你想让它成为一个惊喜,而这是最安全的地方。你进入结账界面,你的老板走到你身后,问你是否有关于TPS报告的备忘录。现在,你已经输入完你的信息,当这发生时,你正要点击提交,这就是你的抄送信息。所有这些。只是坐在那里让任何人看。它不是隐藏在源代码的某个地方,也不是通过网络以纯文本的形式传递的——你是在SS-L或其他什么上面。你不知道,你只知道它很安全

幸运的是,网页编码人员使用了一种小魔法,当您在输入中使用tab键时,可以屏蔽您的CC信息。以下是他们可能会做的事情:

var maskValue = function(){
CCInput.data('value', CCInput.val());
if (CCInput.val().length > 4) {
    CCInput.val(new Array(CCInput.val().toString().length-3).join('•')+CCInput.data('value').substr(-4)); // change all but the last 4 digits to *
}


添加了一个取消掩码功能,以防您亲爱的用户可能希望确保他们首先将所有内容都正确无误。;)

我刚刚注意到,这里的jQuery很糟糕,因为您使用的是
.field name field credit card
,一个类名,好像它是一个唯一的ID。如果您碰巧尝试使用两个信用卡字段,则此代码将遇到问题。最好是
$(“.field name field credit card”).text(函数(u,txt){return txt.replace(/.*(\d{4})$/,“xxxx xxxx xxxx xxxx$1”);})(当然添加了空格),因为这将正确处理任意数量的字段。谢谢你的修复,@NiettheDarkAbsol。在javascript中这样做至少有一个非常好的理由。如果在单页签出向导中显示订单确认作为最后一步,并且cc号(刚刚在客户端的表单字段中输入)尚未发送到服务器,然后通过javascript显示一个屏蔽的cc号码是正确的方法。我看到的许多订单确认,客户端数据的流失显示整个信用卡号作为确认的一部分。当你把它存储在服务器上时,它会被屏蔽。你所描述的有一个案例,但是你应该考虑是否在最后一次确认之前,确认面罩或机会,这对你的用户体验更为重要。
var maskValue = function(){
CCInput.data('value', CCInput.val());
if (CCInput.val().length > 4) {
    CCInput.val(new Array(CCInput.val().toString().length-3).join('•')+CCInput.data('value').substr(-4)); // change all but the last 4 digits to *
}