Я знаю, что могу получить отношение name/value, используя
$(#form).serializeArray();
Но есть ли способ получить всю энчиладу, тип, имя и значение с помощью одного вызова?
Я знаю, что могу получить отношение name/value, используя
$(#form).serializeArray();
Но есть ли способ получить всю энчиладу, тип, имя и значение с помощью одного вызова?
Используйте $("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()
Следующий код помогает получить детали элементов из конкретной формы с идентификатором формы,
$('#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
формы и использовать данные, которые вы получаете оттуда? Что-то вроде этого:
$('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
});
Отметить ответ кажется лучшим способом, IMO.