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

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

$(#form).serializeArray();

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

5 ответов


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

на docs:

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

теперь к вашему вопросу,

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

если вы просто хотите, чтобы цикл через элементы,

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


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

$('#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());
    }
):

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

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

чтобы получить все элементы формы использовать

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

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

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

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

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