@sinelnikov-web

Что на самом деле делает атрибут type у input?

Добрый день ребята, учусь на втором курсе бакалавриата и появилась небольшая темка для холивара.
Преподаватель говорит, что атрибут type у input задаёт тип данных для этого элемента. В спецификации html написано примерно так: "The type attribute controls the data type (and associated control) of the element."
Но мне кажется, что атрибут type задаёт не тип данных, а лишь формат ввода данных.
Моя позиция базируется на следующих аргументах:
1) В HTML как в таковом типов данных нет.
2) В JavaScript, в котором как раз уже есть типы данных, любые данные получаемые из input приходят в виде string не зависимо от значения атрибута type.
С моей точки зрения, я с таким же успехом могу написать примерно такой код:
document.getElementById('test').addEventListener('input', (e) => {
        if (isNaN(e.target.value)) {
            e.target.value = e.target.value.slice(0, e.target.value.length - 1)
        }
    })

Или что-то подобное(не столь важно) и по итогу пользователь точно так же не сможет вводить другие символы, кроме чисел.
Может ли кто-нибудь рассудить, кто в этой ситуации прав. Прошу аргументировать свои ответы. Понимаю, что это скорее просто очередная тема для холивара, но всё же, мне интересно услышать мнение других людей.
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 2
@lil_koi
лучший из худших
Но мне кажется, что атрибут type задаёт не тип данных, а лишь формат ввода данных.

ну не совсем, ты можешь задать, либо формат ввода данных(дата, телефон, номер или просто строка и т.д), либо тип кнопки или тип hidden и поле вообще не будет отображаться, но данные там будут.
Ответ написан
profesor08
@profesor08
Задает визуальное отображение, задает способ взаимодействия, дает доступ к тем или иным данным, которые соответствуют инпуту, и активируют работу тех или иных атрибутов. По сути это разные элементы, у них разные интерфейсы.

Например, если у тебя type="text", то выглядеть будет как белый прямоугольник с рамкой, в который ты можешь печать текст и получить этот текст в атрибуте value

Если у тебя type="number", то выглядеть будет несколько иначе, появятся кнопочки. Вводить можно будет только цифры. Начинают работать дополнительные атрибуты, которые ограничивают диапазон вводимого числа, шаг инкремента при нажатии на стрелки, а так-же появляется дополнительное форматирование.

Если у тебя type="file", то вводить ты туда ничего не можешь, в value будет имя выбранного файла. А через свойство files можно будет получить доступ к выбранным файлам. Так-же начнет работать атрибут accept.

И так для каждого типа инпута.

Так что тут можно сказать лишь то, что сказать что атрибут type задает тип инпута, это как ничего не сказать.

Преподаватель говорит, что атрибут type у input задаёт тип данных для этого элемента.

Не он не прав, в зависимости от типа, браузер отображает разные элементы. И взаимодействовать с инпутами надо по разному.

Но мне кажется, что атрибут type задаёт не тип данных, а лишь формат ввода данных.

Учитывая выше написанное, это не так.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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