Маска первых 2 символов в форме ввода - PullRequest
3 голосов
/ 29 января 2020

Здравствуйте, я пытаюсь скрыть / изменить (с помощью *) 1-й и 2-й символы в форме ввода, но значение не изменилось.

Например, если в моей форме ввода я поставил sarahlovecode в форме ввода укажите **rahlovecode, но при отправке получите полное значение sarahlovecode

HTML: <input type="text" class="input" name="secret_word" id="secret_word">

И Js i, используя:

$.fn.mask = function( regexp, matchGroup, callback ) {
    this.on("blur", function(e){
      $(this).data("value", this.value);
      var result;

      while (result = regexp.exec(this.value)) {
        var matches = result.slice(1);

        if (callback){
          var substitute = callback(matches[0]);
        } else {
          var substitute = Array(matches[matchGroup-1].length + 1).join("*");
        }

        matches[matchGroup-1] = substitute;
        this.value = matches.join("");
      }
    })

    this.on("focus", function(e){
      this.value = $(this).data("value") || "";
    });
  }

  // With Regular expression
  phoneRegexp = new RegExp("(.*?)(.{1})$", "g");
  $("#secret_word").mask(phoneRegexp, 2);

ref: https://www.sitepoint.com/community/t/mask-input-fields-without-affecting-validation/37100/15

И это работает, но измените значение с помощью **, как и входное слово.

Предложение исправить это?

Спасибо.

1 Ответ

1 голос
/ 29 января 2020

Вам необходимо изменить значение ввода обратно при отправке формы. Добавьте в событие «onsubmit» функцию вида:

<form onsubmit="fix_asterisk();">

    <fieldset>
        <input type="text" class="input" name="secret_word" id="secret_word">
    </fieldset>

    <input type="submit">
</form>

Затем в javascript добавьте функцию:

<script>
    function fix_asterisk(){
        let input = document.getElementById("secret_word");
        input.value = $(input).data("value");
    }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...