Получить тип ввода из формы HTML

Я пытаюсь получить тип ввода моей HTML-формы в Javascript для дальнейшего использования. Я не говорю об атрибуте типа ввода HTML, но о типе переменной, которую вы получаете с помощью оператора typeof JS.

Я использую код ниже, чтобы проверить это:

<form oninput="test();" name="myform">
<input name="anumber" value="100">
<input name="aboolean" value="true">  
</form>
<div id="message"></div>
<script type="text/javascript">
  function test(){
    anumber = document.myform.anumber.value;
    aboolean = document.myform.aboolean.value;
    document.getElementById("message").innerHTML = anumber + " " + typeof(anumber) + " | " + aboolean + " " + typeof(aboolean)
   }
</script>

Во сне это отображает: "100 число | истинное логическое значение", а не "100 строка | истинное значение". Можете ли вы помочь мне определить пользовательскую функцию, чтобы сделать это?

Спасибо за помощь! никола

1 ответ

Решение

value Свойство элемента ввода всегда хранится в виде строки, поэтому typeof всегда собирается вернуть "строку". Вам нужно написать пользовательскую функцию, которая просматривает содержимое этой строки и соответственно определяет правильный тип. Что-то вроде этого может быть достаточно, хотя я, вероятно, пропустил один или два случая:

function getInputType(value) {
    if(value === "")
        return "";
    else if(value === "true" || value === "false")
        return "boolean";
    else if(!Number.isNaN(Number(value)))
        return "number";
    else
        return typeof value;
}

jsFiddle demo

Другие вопросы по тегам