Как правильно сохранить исходное значение из маскированного текстового поля в другое текстовое поле - PullRequest
0 голосов
/ 25 сентября 2019

Я хотел имитировать способ скрытия / отображения полей пароля, щелкая значок глаза.Разница в том, что мой ввод не должен быть полностью скрыт, и вместо обычного символа звездочки (*) в полях пароля символы должны быть заменены на «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/

Как успешно сохранить исходное значение втекстовое поле без маски?Что, если пользователь вставит символ между строкой, что нужно добавить в код, чтобы решить эту проблему?

...