2014-01-07 19 views
1

我有一个div,我需要除去最后四位以外的所有字符。我目前正在使用replaceWith,但它取代了整个事情。JQuery替换除最后四位数以外的CC号

这里就是我有

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

$(".field-name-field-credit-card").replaceWith("xxxx xxxx xxxx xxxx"); 

和我的结果

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

但我想它是:

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

jsfiddle

回答

3

好了,我为你一个正则表达式和更新您的fiddle

$(".field-name-field-credit-card").text(function(_,val) { 
    return val.replace(/\d{12}(\d{4})/, "xxxx xxxx xxxx $1"); 
}); 

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

如果你真的想屏蔽客户端,这段丑陋的代码将做到这一点。

它的作用是用当前文本替换当前元素的文本,通过replace运行正则表达式。正则表达式查找12位数字,然后存储下一个4位数字,并将16位数字的字符串替换为'x',后面跟着它保存的最后4位数字。

+1

我刚刚注意到,在这个jQuery是不好的,因为你使用'.field-name-field-credit-card',一个类名,就好像它是一个唯一的ID。如果您碰巧尝试做两个信用卡领域,此代码会遇到问题。这会比$(“。field-name-field-credit-card”)好得多。text(function(_,txt){return txt.replace(/.*(\ d {4})$/“xxxx xxxx xxxx $ 1”);});'(当然添加了空格),因为这将正确处理任意数量的字段。请参阅[文档](http://api.jquery.com/text/#text-function) –

+0

感谢修复,@NiettheDarkAbsol。你的更强大。 –

+1

至少有一个非常糟糕的理由在JavaScript中做到这一点。如果在单页结账向导中显示订单确认作为最后一步,并且cc编号(刚输入到客户端的表单字段中)尚未发送到服务器,然后通过javascript显示一个屏蔽的cc数是正确的方法。 – simmer

6

引述我们主主泡沫:这是一个“真的他妈的的想法!

因为任何人嗅探网络 - 或赫克,刚开到电脑,然后右键单击=>查看源文件 - 可以访问原始的信用卡号码和你不小心扔周围的任何其他信息

在PHP中做到这一点的服务器的例子:

<?php 
$hidden_number = "xxxx xxxx xxxx ".substr($full_number,-4); 
+0

同意。更换服务器上的值,所以CC号码不会发送到客户端 –

+1

也许卡片是在客户端输入的? – Neil

+0

是的 - 如果卡刚进入客户端,并且尚未发送到服务器,那么通过javascript显示cc数的掩码确认是合法的。 – simmer

2

虽然它看起来像你可能是通过纯文本,这是不好路过的CC#从服务器到客户端,我能想到的,为什么掩盖在客户端的CC是一个好主意,所以在这里:

你在工作中为朋友或爱人在网上订购礼物,也许是因为你希望它是一个惊喜,而且这是最安全的地方。你到了退房屏幕,你的老板出现在你身后,询问你是否收到关于TPS报告的备忘录。现在,您已经完成了输入您的信息,并且您将在发生这种情况时立即提交提交,因此您的CC信息也是如此。所有的。只是坐在那里让任何人看到。它并不隐藏在某处的源代码中,或者通过网络以纯文本的方式传递 - 你在SS-fucking-L或其他任何地方。你不知道,你只知道它是安全的。

幸运的是,当您输入输出时,网页编码人员会隐藏你的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 * 
} 

http://jsfiddle.net/n32jmqar/

群中的中断屏蔽功能,你亲爱的用户可能想确保他们得到的一切权利第一。 ;)

相关问题