How to get input type using jquery?

JqueryInputTypes

Jquery 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:

  1. 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).

  2. The element in question lives inside an element with ID container (to remove ambiguences with other elements on the page).

  3. 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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLuciView Question on Stackoverflow
Solution 1 - JqueryMark SchultheissView Answer on Stackoverflow
Solution 2 - Jqueryxil3View Answer on Stackoverflow
Solution 3 - Jqueryuser113716View Answer on Stackoverflow
Solution 4 - JqueryMatthew AbbottView Answer on Stackoverflow
Solution 5 - JqueryErgecView Answer on Stackoverflow
Solution 6 - JqueryRobertView Answer on Stackoverflow
Solution 7 - Jquerypat capozziView Answer on Stackoverflow
Solution 8 - JqueryBoldewynView Answer on Stackoverflow
Solution 9 - JqueryTibiView Answer on Stackoverflow
Solution 10 - JqueryAmit DwivediView Answer on Stackoverflow
Solution 11 - JquerySanthosh KumarView Answer on Stackoverflow
Solution 12 - JqueryKaushal SachanView Answer on Stackoverflow