Joh*_*lia 95 jquery jquery-filter
在jquery中是否有一种简单的方法(没有单独列出它们)来选择所有表单元素和仅表单元素.
我不能使用children()等因为表单包含其他HTML.
例如:
$("form").each(function(){
$(this, "input, textarea, select");
});
Run Code Online (Sandbox Code Playgroud)
Sel*_*gam 161
编辑:正如评论中指出的那样(Mario Awad&Brock Hensley),.find用来吸引孩子
$("form").each(function(){
$(this).find(':input') //<-- Should return all input elements in that specific form.
});
Run Code Online (Sandbox Code Playgroud)
表单也有一个元素集合,有时这与子元素不同,例如表单标记在表格中并且未关闭时.
var summary = [];
$('form').each(function () {
summary.push('Form ' + this.id + ' has ' + $(this).find(':input').length + ' child(ren).');
summary.push('Form ' + this.id + ' has ' + this.elements.length + ' form element(s).');
});
$('#results').html(summary.join('<br />'));Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form id="A" style="display: none;">
<input type="text" />
<button>Submit</button>
</form>
<form id="B" style="display: none;">
<select><option>A</option></select>
<button>Submit</button>
</form>
<table bgcolor="white" cellpadding="12" border="1" style="display: none;">
<tr><td colspan="2"><center><h1><i><b>Login
Area</b></i></h1></center></td></tr>
<tr><td><h1><i><b>UserID:</b></i></h1></td><td><form id="login" name="login" method="post"><input
name="id" type="text"></td></tr>
<tr><td><h1><i><b>Password:</b></i></h1></td><td><input name="pass"
type="password"></td></tr>
<tr><td><center><input type="button" value="Login"
onClick="pasuser(this.form)"></center></td><td><center><br /><input
type="Reset"></form></td></tr></table></center>
<div id="results"></div>Run Code Online (Sandbox Code Playgroud)
可能是:输入选择器是你想要的
$("form").each(function(){$(':input',this)// < - 应返回该特定形式的所有输入元素.});
正如文档中所指出的那样
要在使用时获得最佳性能:输入选择元素,首先使用纯CSS选择器选择元素,然后使用.filter(":input").
你可以使用如下,
$("form").each(function(){
$(this).filter(':input') //<-- Should return all input elements in that specific form.
});
Run Code Online (Sandbox Code Playgroud)
Sri*_*n.S 50
以下代码有助于从表单ID获取特定表单中元素的详细信息,
$('#formId input, #formId select').each(
function(index){
var input = $(this);
alert('Type: ' + input.attr('type') + 'Name: ' + input.attr('name') + 'Value: ' + input.val());
}
);
Run Code Online (Sandbox Code Playgroud)
下面的代码有助于从加载页面中的所有表单中获取元素的详细信息,
$('form input, form select').each(
function(index){
var input = $(this);
alert('Type: ' + input.attr('type') + 'Name: ' + input.attr('name') + 'Value: ' + input.val());
}
);
Run Code Online (Sandbox Code Playgroud)
下面的代码有助于获取放置在加载页面中的元素的详细信息,即使元素没有放在标记内,
$('input, select').each(
function(index){
var input = $(this);
alert('Type: ' + input.attr('type') + 'Name: ' + input.attr('name') + 'Value: ' + input.val());
}
);
Run Code Online (Sandbox Code Playgroud)
注意:我们在对象列表中添加了更多元素标记名称,如下所示,
Example: to get name of attribute "textarea",
$('input, select, textarea').each(
function(index){
var input = $(this);
alert('Type: ' + input.attr('type') + 'Name: ' + input.attr('name') + 'Value: ' + input.val());
}
);
Run Code Online (Sandbox Code Playgroud)
cir*_*dei 10
如果您有其他类型,请编辑选择器:
var formElements = new Array();
$("form :input").each(function(){
formElements.push($(this));
});
Run Code Online (Sandbox Code Playgroud)
所有表单元素现在都在数组formElements中.
JQuery序列化函数使得获取所有表单元素变得非常容易。
演示:http : //jsfiddle.net/55xnJ/2/
$("form").serialize(); //get all form elements at once
//result would be like this:
single=Single&multiple=Multiple&multiple=Multiple3&check=check2&radio=radio1
Run Code Online (Sandbox Code Playgroud)
对于记录:以下代码片段可以帮助您在悬停它们时通过临时标题获取有关输入,文本区域,选择,按钮,标签的详细信息.
$( 'body' ).on( 'mouseover', 'input, textarea, select, button, a', function() {
var $tag = $( this );
var $form = $tag.closest( 'form' );
var title = this.title;
var id = this.id;
var name = this.name;
var value = this.value;
var type = this.type;
var cls = this.className;
var tagName = this.tagName;
var options = [];
var hidden = [];
var formDetails = '';
if ( $form.length ) {
$form.find( ':input[type="hidden"]' ).each( function( index, el ) {
hidden.push( "\t" + el.name + ' = ' + el.value );
} );
var formName = $form.prop( 'name' );
var formTitle = $form.prop( 'title' );
var formId = $form.prop( 'id' );
var formClass = $form.prop( 'class' );
formDetails +=
"\n\nFORM NAME: " + formName +
"\nFORM TITLE: " + formTitle +
"\nFORM ID: " + formId +
"\nFORM CLASS: " + formClass +
"\nFORM HIDDEN INPUT:\n" + hidden.join( "\n" );
}
var tempTitle =
"TAG: " + tagName +
"\nTITLE: " + title +
"\nID: " + id +
"\nCLASS: " + cls;
if ( 'SELECT' === tagName ) {
$tag.find( 'option' ).each( function( index, el ) {
options.push( el.value );
} );
tempTitle +=
"\nNAME: " + name +
"\nVALUE: " + value +
"\nTYPE: " + type +
"\nSELECT OPTIONS:\n\t" + options;
} else if ( 'A' === tagName ) {
tempTitle +=
"\nHTML: " + $tag.html();
} else {
tempTitle +=
"\nNAME: " + name +
"\nVALUE: " + value +
"\nTYPE: " + type;
}
tempTitle += formDetails;
$tag.prop( 'title', tempTitle );
$tag.on( 'mouseout', function() {
$tag.prop( 'title', title );
} )
} );
Run Code Online (Sandbox Code Playgroud)
小智 6
jQuery保留了对vanilla JS表单元素的引用,它包含对所有表单的子元素的引用.你可以简单地抓住参考并继续前进:
var someForm = $('#SomeForm');
$.each(someForm[0].elements, function(index, elem){
//Do something here.
});
Run Code Online (Sandbox Code Playgroud)
这是我最喜欢的功能,它对我来说就像一个魅力!
它返回一个包含所有输入、选择和文本区域数据的对象。
它试图通过查找元素名称 else Id else 类来获取对象名称。
var All_Data = Get_All_Forms_Data();
console.log(All_Data);
Run Code Online (Sandbox Code Playgroud)
功能:
function Get_All_Forms_Data(Element)
{
Element = Element || '';
var All_Page_Data = {};
var All_Forms_Data_Temp = {};
if(!Element)
{
Element = 'body';
}
$(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;
}
Run Code Online (Sandbox Code Playgroud)