How to get input type using jquery?
JqueryInputTypesJquery Problem Overview
I have a page where the input type always varies, and I need to get the values depending on the input type. So if the type is a radio, I need to get which is checked, and if it is a checkbox I need to now which are checked, and if it is a drop down I need to know which is selected, and I if it is a text/textarea I need to know the values.
Any idea on how to do that?
Jquery Solutions
Solution 1 - Jquery
EDIT Feb 1, 2013. Due to the popularity of this answer and the changes to jQuery in version 1.9 (and 2.0) regarding properties and attributes, I added some notes and a fiddle to see how it works when accessing properties/attributes on input, buttons and some selects. The fiddle here: http://jsfiddle.net/pVBU8/1/
get all the inputs:
var allInputs = $(":input");
get all the inputs type:
allInputs.attr('type');
get the values:
allInputs.val();
NOTE: .val() is NOT the same as :checked for those types where that is relevent. use:
.attr("checked");
EDIT Feb 1, 2013 - re: jQuery 1.9 use prop() not attr() as attr will not return proper values for properties that have changed.
.prop('checked');
or simply
$(this).checked;
to get the value of the check - whatever it is currently. or simply use the ':checked' if you want only those that ARE checked.
EDIT: Here is another way to get type:
var allCheckboxes=$('[type=checkbox]');
EDIT2: Note that the form of:
$('input:radio');
is perferred over
$(':radio');
which both equate to:
$('input[type=radio]');
but the "input" is desired so it only gets the inputs and does not use the universal '*" when the form of $(':radio')
is used which equates to $('*:radio');
EDIT Aug 19, 2015: preference for the $('input[type=radio]');
should be used as that then allows modern browsers to optimize the search for a radio input.
EDIT Feb 1, 2013 per comment re: select elements @dariomac
$('select').prop("type");
will return either "select-one" or "select-multiple" depending upon the "multiple" attribute and
$('select')[0].type
returns the same for the first select if it exists. and
($('select')[0]?$('select')[0].type:"howdy")
will return the type if it exists or "howdy" if it does not.
$('select').prop('type');
returns the property of the first one in the DOM if it exists or "undefined" if none exist.
$('select').type
returns the type of the first one if it exists or an error if none exist.
Solution 2 - Jquery
You could do the following:
var inputType = $('#inputid').attr('type');
Solution 3 - Jquery
If what you're saying is that you want to get all inputs inside a form that have a value without worrying about the input type, try this:
Example: http://jsfiddle.net/nfLfa/
var $inputs = $('form').find(':checked,:selected,:text,textarea').filter(function() {
return $.trim( this.value ) != '';
});
Now you should have a set of input elements that have some value.
You can put the values in an array:
var array = $inputs.map(function(){
return this.value;
}).get();
Or you could serialize them:
var serialized = $inputs.serialize();
Solution 4 - Jquery
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();
};
Solution 5 - Jquery
$("#yourobj").attr('type');
Solution 6 - Jquery
The best place to start looking is http://api.jquery.com/category/selectors/">http://api.jquery.com/category/selectors/</a>
This will give you a good set of examples.
Ultamatly the selecting of elements in the DOM is achived using CSS selectors so if you think about getting an element by id you will want to use $('#elementId'), if you want all the input tags use $('input') and finaly the part i think you'll want if you want all input tags with a type of checkbox use $('input, [type=checkbox])
Note: You'll find most of the values you want are on attributes so the css selector for attributes is: [attributeName=value]
Just because you asked for the dropdown as aposed to a listbox try the following:
$('select, [size]).each(function(){
var selectedItem = $('select, [select]', this).first();
});
The code was from memory so please accound for small errors
Solution 7 - Jquery
It would seem that the attr functionality is getting further deprecated
$(this).attr('TYPE')
undefined
$(this).prop('type')
"text"
Solution 8 - Jquery
var val = $('input:checkbox:checked, input:radio:checked, \
select option:selected, textarea, input:text',
$('#container')).val();
Comments:
-
I assume, that there is exactly one form element, that can be either a textarea, input field, select form, a set of radio buttons or a single checkbox (you will have to update my code if you need more checkboxes).
-
The element in question lives inside an element with ID
container
(to remove ambiguences with other elements on the page). -
The code will then return the value of the first matching element it finds. Since I use
:checked
and so on, this should always be exactly the value of what you're looking for.
Solution 9 - Jquery
In my application I ended up with two different elements having the same id (bad). One element was a div and the other an input. I was trying to sum up my inputs and took me a while to realise the duplicate ids. By placing the type of the element I wanted in front of #, I was able to grab the value of the input element and discard the div:
$("input#_myelementid").val();
I hope it helps.
Solution 10 - Jquery
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(".show-pwd").click(function(){
alert();
var x = $("#myInput");
if (x[0].type === "password") {
x[0].type = "text";
} else {
x[0].type = "password";
}
});
});
</script>
</head>
<body>
<p>Click the radio button to toggle between password visibility:</p>Password:
<input type="password" value="FakePSW" id="myInput">
<br>
<br>
<input type="checkbox" class="show-pwd">Show Password</body>
</html>
Solution 11 - Jquery
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script type="text/javascript" src="hs/jquery1.js"></script>
<title>Document</title>
</head>
<body>
<form>
<input type="text" class="tamil">
<input type="button" class="english">
</form>
<script>
$("input").addClass(function(index){
console.log($(this).attr('type'));
})
</script>
</body>
</html>
> i get wright form type
Solution 12 - Jquery
Very Simple using jQuery... To check that selected element is type of input
$(".elementClass").is('input')
To check that selected element is type of textarea
$(".elementClass").is('textarea')
To check that selected element is type of Radio
$(".elementClass").is('input[type="radio"]')
To check that selected element is type of Checkbox
$(".elementClass").is('input[type="checkbox"]')
To check that selected element is type of Input type number
$(".elementClass").is('input[type="number"]')
To check that selected element is type of Input type password
$(".elementClass").is('input[type="password"]')
To check that selected element is type of Input type email
$(".elementClass").is('input[type="email"]')
.....
...
So Basically you can change selection and type to determine required input type