#javascript #html
Пользователь вводит данные: //В скрипте пытаюсь рассуждать,что если это не строка, то выводить ошибку var registration = document.getElementById("registration"); registration.onclick = function() { var name = document.getElementById("name").value; if (typeof(name) === "string") { alert("Вы зарегистрированы"); } else { var nameColor = document.getElementById("name"); nameColor.style.borderColor = "#FF0000"; alert('Имя введено некорректно') } }Введите имя:
И собственно вопрос: как в input узнать, что ввел пользователь: число или строку? К примеру: "12421" и "acaca". Как разделить первый и второй пример?
Ответы
Ответ 1
Input[type="text"] всегда возвращает символы в качестве строки, хоть вы и можете написать там одни цифры. Для такой валидации лучше использовать регулярные выражения. var registration = document.getElementById("registration"); registration.onclick = function() { var input = document.getElementById("name"); var letters = /^[A-Za-z]+$/; if (input.value.match(letters)) { alert("Вы зарегистрированы"); } else { input.style.borderColor = "#FF0000"; alert('Имя введено некорректно'); } }Введите имя:Ответ 2
function stringOrNumber(str) { if (isNaN(str)) { return "string"; } else { return "number"; } } console.log(stringOrNumber("12421")); console.log(stringOrNumber("acaca"));Ответ 3
А можно вообще без скрипта, использовать атрибут pattern )
Ответ 4
Есть много разных способов проверки строки на число, всё зависит от конкретной задачи, например, с помощь функции Number. Приведу несколько примеров (сначала код потом результат): Number('wrwet'); NaN Number('1.3'); 1.3 Number('1e3'); 1000 Как видно эта функция хорошо справляется с задачей, НО она пропускает экспоненциальную форму записи числа, а такой вариант зачастую не подходит. Можно добавить проверку, является ли значение конечным числом. Лично я обычно делаю такую проверку: if( !isNaN('1e1000') && isFinite('1e1000') ) { console.log( 'конечное число'); } else { console.log( 'не число (или очень большое число или Infinity'); } Ещё важно учитывать должно ли число быть целим или может быть вещественным, может ли оно быть отрицательным или только положительным.
Ответ 5
В JavaScript есть оператор typeof: typeof undefined // "undefined" typeof 0 // "number" typeof true // "boolean" typeof "foo" // "string" typeof {} // "object" typeof null // "object" typeof function(){} // "function"
Комментариев нет:
Отправить комментарий