2012-12-06 5 views
30

Ich habe folgende html zu bekommen Element in einer Variablen.jQuery-Selektor Form von Namen

Dies ist, was ich versucht habe, das form Element zu erhalten, indem es Name ist:

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

(aber ich denke, das frmSave innen form mit dem Namen ein Kinder-Element zu erhalten versuchen, das für das, was falsch ist Ich brauche).

Wie kann ich dies erreichen, ist es möglich, ein form nur durch die name mit einem Wähler zu bekommen?


UPDATE: ich in meinem Quellcode in die falsche Art und Weise zu tun, indem sie die Kinder Elemente wie Christian Varga Erklärung sagt bekommen. Aber ich habe es hier richtig hingestellt, mein Schlechter.

+3

Ihr Code korrekt. –

+0

Sind Sie sicher, dass keine weiteren JS-Fehler auf der Seite vorhanden sind, die die Ausführung stoppen? Überprüfen Sie die Konsolenprotokolle. – webnoob

+1

Ich denke, es war korrekt, aber aus irgendeinem Grund druckt es "Null" an der Konsole, deshalb fragte ich, vielleicht könnte etwas anderes das Problem sein, aber ich werde alles nochmal überprüfen. –

Antwort

56

$('form[name="frmSave"]') ist korrekt. Du hast erwähnt, dass du dachtest, dass dies alle Kinder mit dem Namen frmsave innerhalb des Formulars bekommen würde; dies würde nur geschehen, wenn es ein Raum oder eine andere combinator zwischen der Form und dem Wähler war, zum Beispiel: $('form [name="frmSave"]');

$('form[name="frmSave"]') bedeutet wörtlich alle Formen mit dem Namen finden frmSave, weil es keine combinator beteiligt ist.

6

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

Sie können jedoch die Notwendigkeit jQuery vermeiden, indem eine ID und getElementById verwenden, oder Sie können die alte getElementsByName("frmSave")[0] oder sogar ältere document.forms['frmSave'] verwenden. jQuery ist hier nicht notwendig.

+0

'getElementsByName'. Nett. –

+0

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

+0

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

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

Zur Erkennung, ob das Formular vorhanden ist, ich ist

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