在jquery中有没有一种简单的方法(不单独列出它们)来选择所有的表单元素,并且只选择表单元素。
我不能使用children()等,因为表单包含其他HTML。
例如:
$("form").each(function(){
let $inputs = $("input, textarea, select", this);
});
发布于 2012-10-12 23:44:56
如果有其他类型,请编辑选择器:
var formElements = new Array();
$("form :input").each(function(){
formElements.push($(this));
});
所有表单元素现在都在数组formElements中。
发布于 2014-03-10 07:45:18
jQuery保留了对普通JS表单元素的引用,这包含了对表单的所有子元素的引用。您可以简单地获取引用并继续操作:
var someForm = $('#SomeForm');
$.each(someForm[0].elements, function(index, elem){
//Do something here.
});
发布于 2017-06-11 05:10:34
这是我最喜欢的功能,它对我来说就像是一个魔力!
它返回一个包含所有输入、选择和文本区数据的对象。
它试图通过查找元素名称、else Id、else类来获取对象名称。
var form_data = get_form_data();
console.log(form_data);
功能:
function get_form_data(element){
element = element || '';
var all_page_data = {};
var all_forms_data_temp = {};
if(!element){
element = 'body';
}
if($(element)[0] == undefined){
return null;
}
$(element).find('input,select,textarea').each(function(i){
all_forms_data_temp[i] = $(this);
});
$.each(all_forms_data_temp,function(){
var input = $(this);
var element_name;
var element_value;
if((input.attr('type') == 'submit') || (input.attr('type') == 'button')){
return true;
}
if((input.attr('name') !== undefined) && (input.attr('name') != '')){
element_name = input.attr('name').trim();
} else if((input.attr('id') !== undefined) && (input.attr('id') != '')){
element_name = input.attr('id').trim();
} else if((input.attr('class') !== undefined) && (input.attr('class') != '')){
element_name = input.attr('class').trim();
}
if(input.val() !== undefined){
if(input.attr('type') == 'checkbox'){
element_value = input.parent().find('input[name="'+element_name+'"]:checked').val();
} else if((input.attr('type') == 'radio')){
element_value = $('input[name="'+element_name+'"]:checked',element).val();
} else {
element_value = input.val();
}
} else if(input.text() != undefined){
element_value = input.text();
}
if(element_value === undefined){
element_value = '';
}
if(element_name !== undefined){
var element_array = new Array();
if(element_name.indexOf(' ') !== -1){
element_array = element_name.split(/(\s+)/);
} else {
element_array.push(element_name);
}
$.each(element_array,function(index, name){
name = name.trim();
if(name != ''){
all_page_data[name] = element_value;
}
});
}
});
return all_page_data;
}
https://stackoverflow.com/questions/12862601
复制相似问题