I have a form and set values of some elements (such as div
, input
,...) with postfix _holder
id.
I know for set value of form input elements must be use val()
method.
And also I know for set value for another elements such as span
and div
must use text()
method.
So I write this code:
<form id="myform">
<span id="title_holder">###</span>
<div id="description_holder">###</div>
<input type="text" value="###" id="id_holder">
<textarea id="others_holder">###</textarea>
<input type="reset">
</form>
<script>
var values = {
'title': '111',
'description': '222',
'id': '333',
'others': '444',
};
$.each(values, function(key, value) {
elementId = $('#' + key + '_holder');
if (elementId.length > 0) {
elementId
.text(value) //for div and span elements
.val(value); //for input and textarea elements
}
});
</script>
See Online: https://jsfiddle.net/NabiKAZ/s13u699u/
I'm not sure for correction of use text()
and val()
at one time. But now all things works well.
But I have problem with reset form. The reset button just reset input
box and don't work for textarea
. (Of course I do not expect span
, div
to work on.)
If I remove .text(value)
in code, reset button works well, But span
, div
don't get values.
My self thinks maybe need to check element before use text()
or val()
methods. but I'm not sure, and so I don't know how can check type element is an input form, See:
$.each(values, function(key, value) {
elementId = $('#' + key + '_holder');
if (elementId.length > 0) {
//IF type of elementId is input form such as input, textarea,...
elementId.val(value); //for input and textarea elements
//ELSE normal html elements such as span, div,...
elementId.text(value); //for div and span elements
}
});
See Online: https://jsfiddle.net/NabiKAZ/s13u699u/1/
What is your suggestion?