@AlexWebDev

Как сделать, что бы input.value выводил не строчное, а численное значение?

HTML код:
<form class="inputs">
	<input type="text" class="text">
	<input type="text" class="text">
	<input type="submit">
</form>

JS код:
var form = document.querySelector("form");
var inputs = document.querySelectorAll("input[type=text]");
var input = document.querySelector("input[type=submit]");
input.onclick = function (e) {
 form.onsubmit = function () {
 	return false;
 }
for (var i = 0; i < inputs.length; i++) {
 if (inputs[i].value == "" || typeof(inputs[i].value) === "number") {
 console.log(inputs[i]); } } }

Здесь я хочу сделать простую проверку в целях тренировки своих начальных знаний и столкнулся с такой проблемой, что второе условие с проверкой инпута на наличие в нем цифр не будет срабатывать, так как инпут всегда выводит строчное значение. Подскажите, с чем это связанно и как это можно исправить. Я попытался преобразовать строку в число, но столкнулся с тем, что при сравнениях "===" и "!==" он просто преобразует все два инпута в число, независимо от того, цифры там стоят или буквы.
  • Вопрос задан
  • 2504 просмотра
Решения вопроса 1
Paul_Smith
@Paul_Smith
input всегда содержит строки.
Если вам нужно получить именно строку, содержащую число, то можно поступить так:
1) используйте type="number" вместо type="text".
Этого недостаточно, т.к потенциально все равно пользователь может это обойти и вставить текст. Поэтому:
2) Проверяйте строку перед преобразованием в число:
https://developer.mozilla.org/ru/docs/Web/JavaScri...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
AlexanderBaranchugov
@AlexanderBaranchugov
Я такой
Для проверки вхождения цифр в значение поля используй регулярные выражения:
/\d/.test( inputs[i].value )
Если вернет true, значит в значении есть цифры
Ответ написан
@PumaStu9
let oneInput = Number(document.getElementsById("айди инпута").value);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы