Jquery, как получить типы, типы и типы элементов формы

Я знаю, что могу получить отношение name/value, используя

$(#form).serializeArray();

Но есть ли способ получить всю энчиладу, тип, имя и значение с помощью одного вызова?

Ответ 1

Используйте $("form :input")

В docs:

Описание: выбор всех входных, textarea, элементы выбора и кнопки.

Теперь на ваш вопрос

есть способ получить целое enchilada, тип, имя и ценность с один вызов?

Если вы просто хотите перебрать элементы,

$("form :input").each(function(index, elm){
  //Do something amazing...
});

Но если вы хотите вернуть какую-то структуру, вы можете использовать .map()

var items = $("form :input").map(function(index, elm) {
    return {name: elm.name, type:elm.type, value: $(elm).val()};
});

Или, если вы просто хотите получить элементы

$("form :input").get()


Пример этого в jsfiddle

Ответ 2

Следующий код помогает получить детали элементов из конкретной формы с идентификатором формы,

$('#formId input, #formId select').each(
    function(index){  
        var input = $(this);
        alert('Type: ' + input.attr('type') + 'Name: ' + input.attr('name') + 'Value: ' + input.val());
    }
):

Следующий код помогает получить детали элементов из всех форм, которые находятся на странице загрузки,

$('form input, form select').each(
    function(index){  
        var input = $(this);
        alert('Type: ' + input.attr('type') + 'Name: ' + input.attr('name') + 'Value: ' + input.val());
    }
):

Нижеприведенный код помогает получить детали элементов, которые находятся на странице загрузки, даже если элемент не находится внутри тега,

$('input, select').each(
    function(index){  
        var input = $(this);
        alert('Type: ' + input.attr('type') + 'Name: ' + input.attr('name') + 'Value: ' + input.val());
    }
):

ПРИМЕЧАНИЕ.. Мы добавляем больше тегов тегов элементов, которые нам нужны в списке объектов, как показано ниже,

Example: to get name of attribute "fieldset",

$('input, select, fieldset').each(
    function(index){  
        var input = $(this);
        alert('Type: ' + input.attr('type') + 'Name: ' + input.attr('name') + 'Value: ' + input.val());
    }
):

Ответ 3

Можете ли вы пройти через каждый элемент input формы и использовать данные, которые вы получаете оттуда? Что-то вроде этого:

$('form input').each(function(i, v) {
    // Access like this:
    //   $(this).attr('type');
    //   $(this).attr('value');
    //   $(this).attr('name');
});

Ответ 4

Чтобы получить ВСЕ элементы формы, используйте

$('input, textarea, select').each(function() {
    //   $(this).attr('type');
    //   $(this).attr('name');
    //   $(this).val();
});

Ответ 5

Возможно, children() будет более полезным, но вам все равно придется фильтровать интересующие вас элементы, если вы не используете селектор.

Вы также можете сделать следующее, только если вы хотите выбрать successful элементы в форме; это НЕ будет включать кнопки или отключенные поля.

$($('#testf').serializeArray()).each(function(index, value){
    $('#testf [name="' + value.name + '"]'); //select the named element
});

Отметить ответ кажется лучшим способом, IMO.