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
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.
The best place to start looking is http://api.jquery.com/category/selectors/
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
You could do the following:
var inputType = $('#inputid').attr('type');
<!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>
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();
};
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();