Masking last 4 digits in JavaScript

后端 未结 7 1692
遥遥无期
遥遥无期 2020-12-09 05:39

Here I am using regex pattern to mask last 4 digits for Credit Card number.

$(\"#ccnumber\").html(ccnbr); //ccnumber refers to div ID

$(\"#ccnumber\").text(         


        
7条回答
  •  南笙
    南笙 (楼主)
    2020-12-09 05:55

    The Function will mask first 12 digits of card number as displayed below :-

    Input : 4444444444444444

    Output : **** **** **** 4444

    function formatCardNumber(event, element) {
    	if (isNaN(event.key) && !isAllowedKey(event)) {
    		event.preventDefault();
    	} else {
    		if (event.keyCode != 8) {
    			if(element.value.length > 14) {
    				var position = element.selectionStart;
    				element.value = element.value.replace(/\W/gi, '').replace(/^(.{4})(.{4})(.{4})(.*)$/, "$1 $2 $3 $4");
    				if(element.value.length != 19) {
    					element.setSelectionRange(position, position);
    				}
    			}
    			else {
    				element.value = element.value.replace(/\W/gi, '').replace(/(.{4})/g, '$1 ');
    			}
    		}
    	}		
    }
    
    function isAllowedKey(event) {
    	var allowed = false;
    	if (event.keyCode === 8 || event.keyCode === 9 || event.keyCode === 37 || event.keyCode === 39) {
    		allowed = true;
    	}
    	return allowed;
    }
    
    function limit(event, element, max_chars) {
    	if(isTextSelected(element)){																		//
    		max_chars += 1;
    	}
    	if (element.value.length >= max_chars && !isAllowedKey(event)) {
    		event.preventDefault();
    	}
    }
    
    function showCardValue() {
    	document.getElementById("cardNo").value = document.getElementById("cardNoSafe").value;
    }
    
    function isTextSelected(input) {
    	var startPosition = input.selectionStart;
    	var endPosition = input.selectionEnd;
    
    	var selObj = document.getSelection();
    	var selectedText = selObj.toString();
    
    	if (selectedText.length != 0) {
    		input.focus();
    		input.setSelectionRange(startPosition, endPosition);
    		return true;
    	} else if (input.value.substring(startPosition, endPosition).length != 0) {
    		input.focus();
    		input.setSelectionRange(startPosition, endPosition);
    		return true;
    	}
    	return false;
    }
    
    function hideCardValue(val) {
    	document.getElementById("cardNoSafe").value = val;
    	var len = val.length;
    	if (len >= 14) {
    		const regex = /\d{4}(?= \d{1})/g;
    		const substr = "****";
    		document.getElementById("cardNo").value = val.replace(regex, substr);
    	}
    }

提交回复
热议问题