2017-09-18 41 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形式键(字母,数字,符号)和退格按钮。