2017-09-18 73 views
-2

我想知道如何獲得輸入的長度,並取代開始和結束值之間的所有內容,但保留2個字符和兩端。掩蔽輸入的任何字段和值

我不想預定義長度,因爲我希望它可以在任何輸入上使用任何值,並且仍然能夠在表單提交時使用PHP讀取值。

輸入:Hello world street 12 輸出:He*** ***** ****** 12

輸入:185445414631 輸出:18********31

的js LIB: https://github.com/igorescobar/jQuery-Mask-Plugin

我的代碼: https://jsfiddle.net/k4y0ctho/1/

+0

掩蓋字符串留下前2個字符和最後1.這是模式的權利。 –

+0

@HimanshuUpadhyay第一個2和最後2個sir – Zoric

+0

而字符串會始終有數字,或者它可以是字母表,如示例中所示? –

回答

1

如果你的輸出上的其他領域可以接受的,這可能是有用的

$("#input").on("keyup", function() { 
 
    
 
    var input = $(this).val().split("") 
 
    var res = $.map(input, (el, ix) => { 
 
    return ix < 2 || ix > input.length - 3? el:"*" 
 
    }) 
 

 
    $("#output").html(res.join("")); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input type="password" id="input" /> 
 
<br><span id="output"></span>

+0

多數民衆贊成在一個好的開始,更好的是我現在擁有的,但它應該是與掩模的其他方式:) – Zoric

1

如果您正在使用jQuery你可以做的是:

// Util function to mask the value 
function maskValue(value) { 
    if (typeof value !== 'string' || value.length <= 4) { 
     return value; 
    } 
    return value.split('').map((v, i) => { return (i > 1 && i < value.length - 2 ? '*' : v); }).join(''); 
} 

// actual value (not masked) 
let actualValue = ''; 

// keyup event to handle new input and mask the value 
$("#my-input").on("keyup", function(event) { 
    if (event.key === 'Backspace') { 
     actualValue = actualValue.substring(0, actualValue.length - 1); 
    } 
    else { 
     actualValue += event.key; 
    } 
    $('#my-input').val(maskValue(actualValue)); 
}); 

請記住,這並不完美,因爲它只支持n形式鍵(字母,數字,符號)和退格按鈕。