JQuery найти тип ввода (но и для выбора) - PullRequest
26 голосов
/ 02 февраля 2012

Мне нужно найти тип ввода для переключателей, текста и выбора. С помощью <input type="x"> легко найти тип ввода чего-либо, поскольку $(this).attr("type") вернет x

Моя проблема в том, что мне нужно поддерживать элементы <select>, которые не имеют атрибута типа. Конечная цель - вернуть либо радио, текст, либо выбрать.

Я думал сделать что-то подобное, но мне было любопытно, есть ли лучший способ:

if ($(this).tagName == "input") {
    var result = $(this).attr("type");   //returns radio or text (the attr type)
} else {
    var result = $(this).tagName;        //returns select (the element type)
}

Спасибо всем!

Ответы [ 2 ]

64 голосов
/ 02 февраля 2012

Вы можете сделать это ( скрипка здесь ), сделать некоторый простой в использовании плагин:

$.fn.getType = function(){ return this[0].tagName == "INPUT" ? this[0].type.toLowerCase() : this[0].tagName.toLowerCase(); }

И используйте это так

$(".element").getType(); // Will return radio, text, checkbox, select, textarea, etc (also DIV, SPAN, all element types)
$(".elList").getType(); // Gets the first element's type

Который получит тип первого выбранного элемента.

Другая информация

Если вы просто хотите иметь некоторые селекторы, вы можете использовать это:

$("input:text, input:radio, select");

Или выберите все элементы управления формой ( подробнее ):

$(":input") // can return all form types
2 голосов
/ 08 октября 2018

Все типы полей ввода и поля выбора, собранные jQuery find:

$('#myForm').find('select,input').each(function(i,box){
     alert($(box).attr('name'));
}
...