44 Stimmen

jQuery-Selektor zum Abrufen von Formularen nach Namen

Ich habe das folgende HTML:

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

Nur damit Sie es wissen, ich bin nicht fähig um den HTML-Code zu ändern, um eine id oder etwas anderes.

Das habe ich versucht, um die form Element nach seinem Namen:

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

console.log(frm);

(aber ich glaube, der obige Code wird versuchen, ein Kinderelement mit der frmSave Name innerhalb der form was nicht das ist, was ich brauche).

Wie kann ich das erreichen, ist es möglich, die form allein durch die name und einen Selektor verwenden?


Aktualisierung:

Ich war dabei den falschen Weg in meinem ursprünglichen Code (ich war mit einem Leerzeichen aka "Kombinator" in den Selektor) und nicht in den Code-Schnipsel von hier so jQuery wurde versucht, alle Kinder Element mit dem Namen benötigt und ich fragte mich, was falsch war, da nichts zurückgegeben wurde.

Die akzeptierte Antwort gibt eine bessere Erklärung darüber, so dass ein wenig Platz alles ändern könnte - ich werde das nächste Mal richtig schlafen :-)

84voto

Christian Punkte 19367

$('form[name="frmSave"]') ist richtig. Sie sagten, Sie dächten, damit würden alle Kinder mit dem Namen 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. B: $('form [name="frmSave"]');

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

11voto

Arun Pratap Singh Punkte 3224
    // 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.

6voto

Niet the Dark Absol Punkte 310257

Sie haben keinen Kombinator (Leerzeichen, > , + ...), damit keine Kinder involviert werden, niemals.

Sie können jedoch die Notwendigkeit von jQuery vermeiden, indem Sie eine ID y getElementById oder Sie können die alte getElementsByName("frmSave")[0] oder das noch ältere document.forms['frmSave'] . jQuery ist hier unnötig.

2voto

Mike Irving Punkte 1138

Um zu erkennen, ob das Formular vorhanden ist, verwende ich

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X