2014-01-07 25 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/

羣中的中斷屏蔽功能,你親愛的用戶可能想確保他們得到的一切權利第一。 ;)

相關問題