如何使用jquery获取输入类型?

Luc*_*uci 136 jquery types input

我有一个输入类型总是变化的页面,我需要根据输入类型获取值.因此,如果类型是收音机,我需要检查哪个,如果它是我现在需要检查的复选框,如果是下拉菜单,我需要知道哪个被选中,如果它是text/textarea我需要知道这些值.

有关如何做到这一点的任何想法?

Mar*_*iss 246

EDIT 2月1日,2013年由于这个答案的关于性的普及和1.9版本(2.0)更改到jQuery和属性,我添加了一些笔记和小提琴,看看它是如何工作访问属性上输入/属性时,按钮和一些选择.这里的小提琴:http://jsfiddle.net/pVBU8/1/


得到所有输入:

var allInputs = $(":input");
Run Code Online (Sandbox Code Playgroud)

获取所有输入类型:

allInputs.attr('type');
Run Code Online (Sandbox Code Playgroud)

得到价值:

allInputs.val();
Run Code Online (Sandbox Code Playgroud)

注意:.val()与以下内容不同:检查那些相关的类型.使用:

.attr("checked");
Run Code Online (Sandbox Code Playgroud)

编辑2013年2月1日 - re:jQuery 1.9使用prop()而不是attr()因为attr不会为已更改的属性返回正确的值.

.prop('checked');
Run Code Online (Sandbox Code Playgroud)

或者干脆

$(this).checked;
Run Code Online (Sandbox Code Playgroud)

获得支票的价值 - 无论目前是什么.或者只是使用':checked',如果你只想要那些被检查的那些.

编辑:这是另一种获取类型的方法:

var allCheckboxes=$('[type=checkbox]');
Run Code Online (Sandbox Code Playgroud)

EDIT2:请注意以下形式:

$('input:radio');
Run Code Online (Sandbox Code Playgroud)

被推迟了

$(':radio');
Run Code Online (Sandbox Code Playgroud)

这两者都等同于:

$('input[type=radio]');
Run Code Online (Sandbox Code Playgroud)

但是"输入"是需要的,所以它只获取输入,并且当使用的形式$(':radio')等于时,不使用通用的'*'$('*:radio');

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


编辑2013年2月1日评论re:选择元素@dariomac

$('select').prop("type");
Run Code Online (Sandbox Code Playgroud)

将返回"select-one"或"select-multiple",具体取决于"multiple"属性和

$('select')[0].type 
Run Code Online (Sandbox Code Playgroud)

如果第一个选择存在,则返回相同的选项.和

($('select')[0]?$('select')[0].type:"howdy") 
Run Code Online (Sandbox Code Playgroud)

将返回类型(如果存在)或"howdy"(如果不存在).

 $('select').prop('type');
Run Code Online (Sandbox Code Playgroud)

返回DOM中第一个属性(如果存在)或"undefined"(如果不存在).

$('select').type
Run Code Online (Sandbox Code Playgroud)

返回第一个类型(如果存在)或错误(如果不存在).

  • @dariomac - 查看我的编辑和jQuery 1.9+版本参考 (3认同)
  • 那么"下拉"或选择输入呢?因为那不是输入标签...我现在有同样的问题,但我想使用类型dom属性... (2认同)

xil*_*il3 15

您可以执行以下操作:

var inputType = $('#inputid').attr('type');
Run Code Online (Sandbox Code Playgroud)

  • @zeina - *从不*给元素提供相同的ID. (6认同)

use*_*716 9

如果您要说的是您希望在具有值的表单中获取所有输入而不必担心输入类型,请尝试以下操作:

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

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

现在你应该有一组具有一定价值的输入元素.

您可以将值放在数组中:

var array = $inputs.map(function(){
    return this.value;
}).get();
Run Code Online (Sandbox Code Playgroud)

或者你可以序列化它们:

var serialized = $inputs.serialize();
Run Code Online (Sandbox Code Playgroud)


Mat*_*ott 7

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();
};
Run Code Online (Sandbox Code Playgroud)