Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   if как упростить? (https://javascript.ru/forum/css-html/76453-if-kak-uprostit.html)

Brick 12.01.2019 21:03

if как упростить?
 
if (second == s  || second >s && minute == m  || minute >m && hour == h  || hour >h &&
numDay == D  || numDay>D  && monthsArr[month] == M  || monthsArr[month] >M && year == Y  || year >Y)

есть такой if, но первое && видит, а второе && не видит и всё, что после него

Brick 12.01.2019 21:33

если так:
if (second >= s && minute >= m && hour >= h &&
numDay >= D && monthsArr[month] >= M && year >= Y)

j0hnik 12.01.2019 21:33

Цитата:

Сообщение от Brick
а второе && не видит и всё

значит первое возвращает false

Brick 12.01.2019 22:05

в type="number"
maxlength - не работает,чем ограничить?

Brick 12.01.2019 22:07

j0hnik,
с if вроде решил, сравнивал так даты по частям минуты с минут и тд...
решил так дату перевожу в милисек с помощью getTime() и уже милисек и милисек сравниваю, вроде работает )

Brick 12.01.2019 22:08

j0hnik,
А вот что с number делать?
мне надо чтоб в поле inpyt ввел 4 цифры и всё
если number на tel заменить работает
а как с number реализовать?

j0hnik 13.01.2019 00:19

не совсем понимаю что за number.

Brick 13.01.2019 00:35

j0hnik,
<input type="tel" maxlength="4" class="input_form" id="number" placeholder="Введите число..." > - этот вариант работает, а если вместо type="tel" будет ==>type="number", то не работает

j0hnik 13.01.2019 00:39

Brick,
и в чем проблема пользуйтесь tel или text

Brick 13.01.2019 00:44

j0hnik,
с number, ни как?

Brick 13.01.2019 00:44

j0hnik,
просто хотелось бы number использовать

Brick 13.01.2019 00:45

в number - maxlength="4"- не работает :(

Malleys 13.01.2019 06:39

Цитата:

Сообщение от Brick
мне надо чтоб в поле input ввел 4 цифры и всё

Они прекрасно вводятся

Цитата:

Сообщение от Brick
с number, ни как?

вообще то для этого и предназначен

Цитата:

Сообщение от Brick
в number - maxlength="4"- не работает

Да, оно там не работает, поскольку не понятно, знак минуса тоже учитывать или нет. А если десятичная точка, то её тоже учитывать? Как видите, при использовании input[type="number"] не понятно, что должен делать minlength/maxlength... следует учитывать все знаки числа, или же только целую часть по модулю, или же...

первый вариант решения заключается в использовании атрибутов min, max и step.
<form>
	<input
		type="number"
		min="0"
		max="9999"
		step="1"
		placeholder="Введите 4-значное число..."
		required
	>
</form>

<style>
	input[type="number"] {
		font-size: 300%;
		display: block;
		width: 100%;
		padding: .1em;
		box-sizing: border-box;
		border: 0 solid transparent;
		border-bottom-width: 2px;
		outline: 0;
	}

	input[type="number"]:focus {
		border-color: currentColor;
	}

	input[type="number"]:invalid {
		background-color: #fee;
		color: red;
	}

	input[type="number"]:valid {
		background-color: #efe;
		color: green;
	}
</style>


второй вариант заключается в собственном понимании атрибутов minlength и maxlength. Обратите внимание, что вы можете регулировать количество знаков в натуральном числе(возможно наличие нулей в старшем разряде)
<form>
	<input
		type="number"
		step="1"
		minlength="4"
		maxlength="4"
		placeholder="Введите 4-значное число..."
		required
	>
</form>
<script>
	
addEventListener("input", ({ target }) => {
	if(!target.matches("input[type='number']")) return;
	if(Number.isNaN(target.minLength) || Number.isNaN(target.maxLength)) return;

	target.value = target.value.replace(/\D/g, "").slice(0, target.maxLength);
	target.setCustomValidity(
		target.value.match(
			new RegExp(`^\\d{${target.minLength},${target.maxLength}}$`)
		) ?
			'' : 'Введите 4-значное число'
	);
});
		
</script>
<style>
	input[type="number"] {
		font-size: 300%;
		display: block;
		width: 100%;
		padding: .1em;
		box-sizing: border-box;
		border: 0 solid transparent;
		border-bottom-width: 2px;
		outline: 0;
	}

	input[type="number"]:focus {
		border-color: currentColor;
	}

	input[type="number"]:invalid {
		background-color: #fee;
		color: red;
	}

	input[type="number"]:valid {
		background-color: #efe;
		color: green;
	}
</style>

Brick 13.01.2019 10:40

Malleys,
Спасибо


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