проверить, является ли объект текстовым полем - JavaScript - PullRequest
17 голосов
/ 22 июня 2011

Я понимаю, что мы можем использовать (javascript)

if (typeof textbox === "object") { } 

но существуют ли методы, которые позволят мне убедиться, что объект является текстовым полем?

Ответы [ 6 ]

25 голосов
/ 12 мая 2013
var isInputText = obj instanceof HTMLInputElement && obj.type == 'text';
11 голосов
/ 05 августа 2016

Начиная с 2016 , используйте это:

function isTextBox(element) {
    var tagName = element.tagName.toLowerCase();
    if (tagName === 'textarea') return true;
    if (tagName !== 'input') return false;
    var type = element.getAttribute('type').toLowerCase(),
        // if any of these input types is not supported by a browser, it will behave as input type text.
        inputTypes = ['text', 'password', 'number', 'email', 'tel', 'url', 'search', 'date', 'datetime', 'datetime-local', 'time', 'month', 'week']
    return inputTypes.indexOf(type) >= 0;
}
5 голосов
/ 22 июня 2011

Вы ищете что-то подобное?

if(textbox.tagName && textbox.tagName.toLowerCase() == "textarea") {
    alert('this is a textarea');
}

Если вам нужно узнать, является ли это текстовым вводом, вы можете сделать это:

if(textbox.tagName && textbox.tagName.toLowerCase() == "input" && textbox.type.toLowerCase() == "text") {
    alert('this is a text input');
}
2 голосов
/ 22 июня 2011

Если вы ищете текстовый ввод:

if (textbox.tagName == "input" && textbox.getAttribute("type") == "text") {
   // it's a text input
}

Если вы ищете текстовую область

if (textbox.tagName == "textarea") {
  // it's a textarea
}
1 голос
/ 22 июня 2011

Я думаю, возможно, вы захотите получить ссылку на элемент, а затем проверить возвращаемое значение .type, т.е.

0 голосов
/ 31 октября 2013
if(textbox instanceof HTMLInputElement && textbox.getAttribute("type") == "text") {
    alert("I'm an input text element");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...