Я хотел имитировать способ скрытия / отображения полей пароля, щелкая значок глаза.Разница в том, что мой ввод не должен быть полностью скрыт, и вместо обычного символа звездочки (*) в полях пароля символы должны быть заменены на «x».Формат должен быть таким, как Rxxxx4921, в котором отображается первый символ, следующие четыре символа скрыты, а остальные обычно отображаются.У меня есть два текстовых поля.В одном из них должен отображаться исходный текст, а в другом - замаскированный текст.Причиной этого является показ немаскированного текстового поля, если выбрано «show», и показ маскированного текстового поля, если выбрано «hide».
Мой текущий код корректно маскирует текст при вводе чего-либо в немаскированное текстовое поле.Тем не менее, когда я пытаюсь ввести что-то внутри замаскированного текстового поля, оно получит символы 'x'.
<input type="text" name="masknumber" maxlength="9">
<input type="text" name="number" maxlength="9">
$("input[name='masknumber']").on("keyup", function() {
$("input[name='number']").val(destroyMask(this.value));
this.value = createMask($("input[name='number']").val());
})
$("input[name='number']").on("keyup", function() {
$("input[name='masknumber']").val(destroyMask(this.value));
$("input[name='masknumber']").val(createMask($("input[name='number']").val()));
})
$(document).ready(function() {
var firstpart = "";
})
function createMask(string) {
console.log(string)
var len = string.length;
if (len == 1)
firstpart = string;
var stars = len > 1 ? len > 2 ? len > 3 ? len > 4 ? firstpart + 'XXXX' : firstpart + 'XXX' : firstpart + 'XX' : firstpart + 'X' : firstpart,
result = stars + string.substring(5);
return result;
}
function destroyMask(string) {
console.log(string)
//return string.replace(/\D/g,'').substring(0, 8);
return string;
}
https://jsfiddle.net/0dj8t6ga/
Как успешно сохранить исходное значение втекстовое поле без маски?Что, если пользователь вставит символ между строкой, что нужно добавить в код, чтобы решить эту проблему?