Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Заменить символы на звездочки (https://javascript.ru/forum/dom-window/36099-zamenit-simvoly-na-zvezdochki.html)

laimas 21.11.2019 13:42

input.value = input.value.replace(/^.{4}/, "****");

ksa 21.11.2019 13:53

Цитата:

Сообщение от sektorgena
Надо чтобы он не все символы закрывал, а только первые 4.

Цитата:

Сообщение от LinaInverse
.replace(/./gm, "*");

Заменить более сложным вариантом...

var val='012345678';
alert(val.replace(/^.{1,4}/,function(Str){
	return Str.replace(/./g,'*');
}));

Malleys 21.11.2019 22:38

Цитата:

Сообщение от laimas
input.value = input.value.replace(/^.{4}/, "****");

И как получить само значение? Как скопировать? Как работать с таким значением?

Я думаю, что вы не хотите записать в базу данных «звёздочки»... Вы хотите, чтобы обычное значение выглядело так, чтобы первые четыре символа были представлены при помощи «звёздочек»!
<input class="my-secret-field">

<style>

input.my-secret-field:not(.mirror) {
	position: absolute;
	background: transparent;
	border-color: transparent;
	color: transparent;
	caret-color: black;
}

input.my-secret-field:not(.mirror)::selection {
	color: transparent;
	background: rgba(33, 150, 243, 0.25);
}

input.my-secret-field.mirror {
	pointer-events: none;
}

input.my-secret-field {
	-webkit-appearance: none;
	font-family: monospace;
}
	
</style>

<script>

function inputHandler(input, mirror) {
	return function() {
		mirror.value = input.value.replace(/^.{1,4}/,
			match => "•".repeat(match.length)
		);
	};
}
	
for(const input of document.querySelectorAll("input.my-secret-field")) {
	const mirror = input.cloneNode(true);
	const handler = inputHandler(input, mirror);
	mirror.classList.add("mirror");
	mirror.removeAttribute("name"); // рони, laimas, почему я удаляю имя?
	input.after(mirror);
	input.addEventListener("input", handler);
	handler();
}

</script>

рони 21.11.2019 23:04

Цитата:

Сообщение от Malleys
почему я удаляю имя?

чтоб не было дубля в отправке на сервер информации?

Malleys 21.11.2019 23:49

рони, да! Значение со «звёздочками» ни к нему на сервере, это только для представления!


Часовой пояс GMT +3, время: 21:01.