如何获得使用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();
注释:
-
我假设,只有一个表单元素,可以是textarea,input字段,select表单,一组单选button或单个checkbox(如果需要更多checkbox,您将不得不更新我的代码)。
-
所讨论的元素位于具有ID
container
的元素内(以消除页面上其他元素的混淆)。 -
代码将返回它find的第一个匹配元素的值。 由于我使用
:checked
等,这应该永远是你正在寻找的价值。
看起来attrfunction正在进一步被废弃
$(this).attr('TYPE') undefined $(this).prop('type') "text"
在我的应用程序,我结束了两个不同的元素具有相同的ID(坏)。 一个元素是一个div,另一个是input。 我试图总结我的意见,并花了一段时间才意识到重复的ID。 通过在#前面放置我想要的元素的types,我能够获取input元素的值并丢弃div:
$("input#_myelementid").val();
我希望它有帮助。