console.log gives out undefined on my input field

Viewed 446

script:

    $(document).ready(function (){
        $(document).on('click', '.add_category', function(e){
            e.preventDefault();
            var data = {
                'category_name': $('.category_name').val(),
                'category_description': $('.category_description').val(),
            }
            console.log(data);
        });
    });

form:

<h4 class="text-center font-weight-bold">Add New Category</h4>
<div class="form-group">
<input type="text" class="form-control form-group w-100" placeholder="Category Name" class="category_name">
</div> 
<div class="form-group">
<textarea class="form-control w-100" placeholder="Category Description" class="category_description" cols="50" rows="10"></textarea>
</div>

need advice, my input fields event with me adding content returns undefined even when the variable is the same at the input type and the script's var data

I also tried to change class="category_name" to name="category_name"

What am I missing?

1

2 Answers

Your HTML tags include two class attributes:

<input type="text" class="form-control form-group w-100" placeholder="Category Name" class="category_name">
                   ^^^ here                                                          ^^^ and here

The browser is ignoring the second one, so your jQuery selectors are returning empty sets.

You should combine the class attributes into one string:

<input type="text" class="form-control form-group w-100 category_name" placeholder="Category Name">

You cannot double declare class.

Where you had <input type="text" class="form-control form-group w-100" placeholder="Category Name" class="category_name">

You instead need to declare all classes together, like so:

<input type="text" class="category_name form-control form-group w-100" placeholder="Category Name" >

document.getElementById('submit').onclick=function(e){
    e.preventDefault();
    var data = {
        'category_name': document.getElementsByClassName('category_name')[0].value,
        'category_description': document.getElementsByClassName('category_description')[0].value,
    }
    console.log(data);
};
<h4 class="text-center font-weight-bold">Add New Category</h4>
<div class="form-group">
<input type="text" class="form-control form-group w-100 category_name" placeholder="Category Name" value="">
</div> 
<div class="form-group">
<textarea class="form-control w-100 category_description" placeholder="Category Description"  cols="50" rows="10" value=""></textarea>
</div>
<button id="submit"> Save</button>

Related