Показать сообщение отдельно
  #5 (permalink)  
Старый 21.10.2019, 14:32
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от laimas
никакого maxLength,
Конечно нет, речь о вашем решении.

Сообщение от laimas
если заниматься позицией курсора, то так просто не получится,
если еще и копирование учитывать, то нужно обрабатывать и это событие,
если не цифровой ввод анализировать "а чем?", то надо определить чем менять,
Для этого подходит событие input, которое вы обрабатываете.

Сообщение от laimas
если заниматься позицией курсора, то так просто не получится,
Вам это не нужно, поскольку
Сообщение от Ruru
мне нужно чтобы туда можно было ввести только 1 цифру с 1 до 9.
Я так понимаю, любым способом!

<style>
	table {
		border-collapse: collapse;
	}
	td {
		border: 1px solid #ddd;
		padding: 6px;
	}
</style>

<table>
	<tr><td>1</td><td>2</td><td>3</td></tr>
	<tr><td>4</td><td>5</td><td>6</td></tr>
	<tr><td>7</td><td>8</td><td>9</td></tr>
</table>

<script>
	const table = document.querySelector("table");

	for(const cell of table.querySelectorAll("td, th")) {
		cell.tabIndex = 0;
		cell.contentEditable = true;
		cell.dataset.value = cell.textContent;
	}

	table.addEventListener("input", ({ target }) => {
		let value = target.textContent.replace(target.dataset.value, "");
		value = value || target.textContent;
		value = value.replace(/[^1-9]/g, "").slice(0, 1) || target.dataset.value;

		target.textContent =
		target.dataset.value =
			value;
	});
</script>


laimas, любое иное нажатие не должно менять исходный ввод, так ведь?

Последний раз редактировалось Malleys, 21.10.2019 в 14:35.
Ответить с цитированием