如何获得使用jQuery的inputtypes?

我有一个页面,inputtypes总是变化,我需要取决于inputtypes的值。 所以,如果types是一个无线电,我需要得到哪个检查,如果它是一个checkbox,我现在需要检查,如果是一个下拉菜单,我需要知道哪个select,如果它是一个文本/ textarea我需要知道的价值观。

任何想法如何做到这一点?

编辑2013年2月1日。由于这个答案的stream行和版本1.9(和2.0)有关属性和属性的jQuery的变化,我添加了一些笔记和小提琴,看看它是如何工作时访问属性/属性的input,button和一些select。 这里的小提琴: http : //jsfiddle.net/pVBU8/1/


得到所有的input:

var allInputs = $(":input"); 

获取所有inputtypes:

 allInputs.attr('type'); 

获取值:

 allInputs.val(); 

注意:.val()不同于:检查那些相关的types。 使用:

 .attr("checked"); 

编辑2013年2月1日 – 重新:jQuery 1.9使用prop()不attr()作为ATTR不会返回适当的值已更改的属性。

 .prop('checked'); 

或干脆

 $(this).checked; 

得到支票的价值 – 不pipe它是目前。 或者只需要使用':checked',如果你只想检查那些。

编辑:这是另一种获得types的方法:

 var allCheckboxes=$('[type=checkbox]'); 

编辑2:请注意,forms:

 $('input:radio'); 

已经过期了

 $(':radio'); 

这两个等同于:

 $('input[type=radio]'); 

但是“input”是所希望的,所以它只能得到input,并且在使用$(':radio')的forms时不使用通用的“*”,这相当于$('*:radio');

编辑2015年8月19日:首选$('input[type=radio]'); 应该被使用,然后允许现代浏览器优化search无线电input。


编辑2013年2月1日每个评论重新:select元素@dariomac

 $('select').prop("type"); 

将根据“multiple”属性返回“select-one”或“select-multiple”

 $('select')[0].type 

如果存在,则返回相同的第一个select。 和

 ($('select')[0]?$('select')[0].type:"howdy") 

会返回types,如果它存在,将返回types,如果不存在则返回“你好”。

  $('select').prop('type'); 

如果存在,则返回DOM中第一个的属性;如果不存在,则返回“undefined”。

 $('select').type 

返回第一个存在的types,如果不存在则返回错误。

你可以做到以下几点:

 var inputType = $('#inputid').attr('type'); 

如果你所说的是你想在一个有值的窗体中获得所有的input,而不用担心inputtypes,那么试试这个:

例如: http : //jsfiddle.net/nfLfa/

 var $inputs = $('form').find(':checked,:selected,:text,textarea').filter(function() { return $.trim( this.value ) != ''; }); 

现在你应该有一组具有一定价值的input元素。

你可以把值放在一个数组中:

 var array = $inputs.map(function(){ return this.value; }).get(); 

或者你可以序列化它们:

 var serialized = $inputs.serialize(); 
 GetValue = function(id) { var tag = this.tagName; var type = this.attr("type"); if (tag == "input" && (type == "checkbox" || type == "radio")) return this.is(":checked"); return this.val(); }; 
 $("#yourobj").attr('type'); 

开始寻找最好的地方是http://api.jquery.com/category/selectors/

这会给你一个很好的例子。

最简单的方法是在DOM中select元素是使用CSSselect器来实现的,所以如果你想通过id来获取元素,你会想要使用$('#elementId'),如果你想要所有的input标签使用$('input')并最终的部分,我认为你会想要如果你想所有的input标签types的checkbox使用$('input,[type = checkbox])

注意:你会发现你想要的大部分值都是属性,所以属性的cssselect器是:[attributeName = value]

只是因为你要求将下拉列表放到列表框中,请尝试以下操作:

 $('select, [size]).each(function(){ var selectedItem = $('select, [select]', this).first(); }); 

代码来自内存,所以请小心处理小错误

 var val = $('input:checkbox:checked, input:radio:checked, \ select option:selected, textarea, input:text', $('#container')).val(); 

注释:

  1. 我假设,只有一个表单元素,可以是textarea,input字段,select表单,一组单选button或单个checkbox(如果需要更多checkbox,您将不得不更新我的代码)。

  2. 所讨论的元素位于具有ID container的元素内(以消除页面上其他元素的混淆)。

  3. 代码将返回它find的第一个匹配元素的值。 由于我使用:checked等,这应该永远是你正在寻找的价值。

看起来attrfunction正在进一步被废弃

 $(this).attr('TYPE') undefined $(this).prop('type') "text" 

在我的应用程序,我结束了两个不同的元素具有相同的ID(坏)。 一个元素是一个div,另一个是input。 我试图总结我的意见,并花了一段时间才意识到重复的ID。 通过在#前面放置我想要的元素的types,我能够获取input元素的值并丢弃div:

 $("input#_myelementid").val(); 

我希望它有帮助。