Question

I'm using the following code to attach an event to the submit button of a form :

$('form.manage-users-form').on('click','button.special',function() {

    if ($(this).hasClass('selected')){
        console.log('This user is already special');
    } else {

        $(this).parent().find('button').removeClass('selected');
        $(this).addClass('selected');

        var user_id = $(this).closest("form[id]").val();

        console.log('This user is now special');
        console.log(user_id);
    }
    return false;
});

And you can see that I'm also trying to get the id of the form, but when I check the console I get (an empty string). Why is that and how can I properly get the ID of the form ?

Was it helpful?

Solution

Have you tried?

var user_id = $(this).closest("form").attr('id');

The id of the element is an attribute, you can extract any attribute (including the id) using .attr().

.val() is used to extract the value of the element, which makes no sense in a form.

More Info:

.val()
.attr()

OTHER TIPS

Try this instead. Assuming there is a Single Form on the Page.

 var formid = $('form').attr('id');

Will help you out.

.val() is used to get value of form elements, not attribute.

Use .attr():

var user_id = $(this).closest("form[id]").attr('id');

You can also extract the DOMElement and use pure javascript to get the ID:

var user_id = $(this).closest("form[id]")[0].id;

Try the following:

  var user_id = $(this).closest("form").attr("id");

Will be back with an edit as soon as i test this.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top