2017-09-18 2 views
-2

Je voudrais savoir comment obtenir la longueur d'une entrée et tout remplacer entre les valeurs de début et de fin, mais laisser 2 caractères et les deux extrémités.Masquage des entrées de n'importe quel champ et valeurs

Je ne veux pas prédéfinir la longueur car je veux qu'elle fonctionne sur n'importe quelle entrée avec n'importe quelle valeur et soit toujours capable de lire les valeurs avec PHP quand le formulaire est soumis.

entrée:Hello world street 12 sortie:He*** ***** ****** 12

entrée:185445414631 sortie:18********31

Js lib: https://github.com/igorescobar/jQuery-Mask-Plugin

Mon code: https://jsfiddle.net/k4y0ctho/1/

+0

Masquez la chaîne en laissant les 2 premiers caractères et le dernier 1. Ceci est le motif de droite. –

+0

@HimanshuUpadhyay premier 2 et dernier 2 monsieur – Zoric

+0

Et la chaîne aurait des nombres toujours ou il peut être des alphabets comme indiqué dans l'exemple? –

Répondre

1

si votre sortie est acceptable sur un autre domaine, cela pourrait être utile

$("#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

c'est un bon début, mieux ce que j'ai en ce moment mais il devrait être l'inverse avec le masquage :) – Zoric

1

Si vous utilisez jQuery ce que vous pouvez faire est:

// 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)); 
}); 

S'il vous plaît gardez à l'esprit que ce n'est pas parfait car il ne supporte que n les clés orales (lettres, chiffres, symboles) et le bouton de retour arrière.