jQuery-Selektor zum Abrufen des Formulars nach Namen

Lesezeit: 3 Minuten

Benutzer-Avatar
Oskar Jara

Ich habe folgenden HTML-Code:

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

Nur um zu wissen, ich bin es nicht in der Lage den HTML-Code zu ändern, um eine hinzuzufügen id oder etwas anderes.

Das habe ich versucht zu bekommen form Element mit seinem Namen:

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

console.log(frm);

(Aber ich glaube, der obige Code wird versuchen, ein Kinderelement mit dem zu bekommen frmSave Namen innerhalb der form was ich nicht brauche).

Wie kann ich das erreichen, ist es möglich das zu bekommen form nur durch die name und mit einem Selektor?


Aktualisieren:

Ich habe in meinem ursprünglichen Code den falschen Weg gemacht (ich habe ein Leerzeichen, auch bekannt als “Kombinator”, im Selektor verwendet) und nicht im Code-Snippet von hier, also hat jQuery versucht, jedes untergeordnete Element mit dem benötigten Namen zu erhalten, und ich habe mich gefragt was war falsch, da nichts zurückgegeben wurde.

Die akzeptierte Antwort gibt eine bessere Erklärung dafür, so dass ein wenig Platz alles ändern könnte – ich werde das nächste Mal richtig schlafen 🙂

  • Sind Sie sicher, dass keine anderen JS-Fehler auf der Seite die Ausführung verhindern? Überprüfen Sie die Konsolenprotokolle.

    – Webnoob

    6. Dezember 2012 um 17:02 Uhr

  • Ich denke, es war richtig, aber aus irgendeinem Grund druckt es null an der Konsole, deswegen habe ich gefragt, vielleicht könnte es auch an anderen Dingen liegen, aber ich werde nochmal alles prüfen.

    – Oskar Jara

    6. Dezember 2012 um 17:06 Uhr

Benutzer-Avatar
Christian

$('form[name="frmSave"]') ist richtig. Sie haben erwähnt, dass Sie dachten, dass dies alle Kinder mit dem Namen bekommen würde frmsave innerhalb des Formulars; Dies würde nur passieren, wenn zwischen dem Formular und dem Selektor ein Leerzeichen oder ein anderer Kombinator vorhanden wäre, z. $('form [name="frmSave"]');

$('form[name="frmSave"]') wörtlich bedeutet finden Sie alle Formulare mit dem Namen frmSaveda kein Kombinator beteiligt ist.

    // 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.

  • Ich hatte nur ein Formular auf der Seite und ich benutze $('form') und es hat funktioniert

    – Atta H.

    8. August 2018 um 11:07 Uhr

  • Es wird das gesamte Formular zurückgegeben, und es gibt nur ein Formular.

    – Arun Pratap Singh

    15. August 2018 um 16:34 Uhr

Sie haben keinen Kombinator (Leerzeichen, >, +…), also werden sich niemals Kinder einmischen.

Sie können jedoch die Notwendigkeit von jQuery vermeiden, indem Sie eine verwenden ID und getElementByIdoder Sie könnten die alte verwenden getElementsByName("frmSave")[0] oder die noch älteren document.forms['frmSave']. jQuery ist hier unnötig.

  • document.querySelector("form[name='frmSave']") würde auch funktionieren, aber nur in neueren Browsern.

    – Niet the Dark Absol

    6. Dezember 2012 um 17:04 Uhr

  • Ich weiß, dass es unnötig ist, aber ich arbeite mit anderem Code, der jQuery erfordert, deshalb verwende ich es dafür, danke für deine Erklärung übrigens +1.

    – Oskar Jara

    6. Dezember 2012 um 17:09 Uhr

  • Nichts „erfordert“ jQuery, nicht wirklich 😉 Ich verwende gerne Akkordeons, Schieberegler, Tooltips und modale Dialoge mit handgeschriebenem Vanilla-JS und fühle mich dadurch viel erfolgreicher.

    – Niet the Dark Absol

    6. Dezember 2012 um 17:24 Uhr

Um festzustellen, ob das Formular vorhanden ist, verwende ich

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

1258030cookie-checkjQuery-Selektor zum Abrufen des Formulars nach Namen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy