[jquery] jQuery selector to get form by name

I have the following HTML:

<form name="frmSave">...</form>

Just to know, I am not able to modify the HTML in order to add an id or something else.

This is what I tried to get the form element by it's name:

var frm = $('form[name="frmSave"]');

console.log(frm);

(but I believe the above code will try to get a children element with the frmSave name inside the form which is not what I need).

How can I achieve this, is it possible to get the form by just the name and using a selector?


Update:

I was doing the wrong way in my original code (I was using a space aka "combinator" in the selector) and not in the code snippet from here so jQuery was trying to get any children element with the name needed and I was asking myself what was wrong since nothing was returned.

The accepted answer gives a better explanation about this so a little space could change everything - I will sleep properly next time :-)

This question is related to jquery jquery-selectors

The answer is


    // this will give all the forms on the page.

    $('form')

   // If you know the name of form then.

    $('form[name="myFormName"]')

  //  If you don't know know the name but the position (starts with 0)

    $('form:eq(1)')  // 2nd form will be fetched.

You have no combinator (space, >, +...) so no children will get involved, ever.

However, you could avoid the need for jQuery by using an ID and getElementById, or you could use the old getElementsByName("frmSave")[0] or the even older document.forms['frmSave']. jQuery is unnecessary here.


For detecting if the form is present, I'm using

if($('form[name="frmSave"]').length > 0) {
    //do something
}