Как получить типы элементов формы, имена и значения - PullRequest
12 голосов
/ 14 апреля 2011

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

$(#form).serializeArray();

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

Ответы [ 5 ]

22 голосов
/ 14 апреля 2011

Использование $("form :input")

По документам :

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

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

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

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

$("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

4 голосов
/ 19 сентября 2013

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

$('#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());
    }
):
2 голосов
/ 14 апреля 2011

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

$('input, textarea, select').each(function() {
    //   $(this).attr('type');
    //   $(this).attr('name');
    //   $(this).val();
});
2 голосов
/ 14 апреля 2011

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

$('form input').each(function(i, v) {
    // Access like this:
    //   $(this).attr('type');
    //   $(this).attr('value');
    //   $(this).attr('name');
});
0 голосов
/ 14 апреля 2011

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

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

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

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

...