2012-12-06 13 views
30

Ho il seguente html:selettore jQuery per ottenere forma per nome

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

solo sapere, sono in grado modificare html per aggiungere un id o qualcosa d'altro in modo da poter facilmente ottenere il form elemento in una variabile.

Questo è quello che ho cercato di ottenere l'elemento form per il suo nome:

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

(ma credo che questo sarà cercare di ottenere un elemento di bambini con il nome frmSave all'interno form che è sbagliato per quello che Ho bisogno).

Come posso raggiungere questo obiettivo, è possibile ottenere un form semplicemente il name con un selettore?


UPDATE: stavo facendo nel modo sbagliato nel mio codice sorgente da ottenere gli elementi figli come Christian Varga spiegazione dice. Comunque, l'ho messo qui nel modo giusto, mio ​​cattivo.

+3

Il vostro codice è corretto. –

+0

Sei sicuro che non ci siano altri errori JS nella pagina che impediscono l'esecuzione? Controlla i log della console. – webnoob

+1

Suppongo che fosse corretto ma per qualche motivo stampa 'null' su console, ecco perché ho chiesto, forse l'altra cosa potrebbe essere il problema ma controllerò di nuovo tutto. –

risposta

56

$('form[name="frmSave"]') è corretto. Hai detto che pensavi che questo avrebbe portato tutti i bambini con il nome frmsave all'interno del modulo; Ciò accadrebbe solo se ci fosse uno spazio o altri combinatore tra la forma e il selettore, ad esempio: $('form [name="frmSave"]');

$('form[name="frmSave"]') letteralmente significa trovare tutte le forme con il nome frmSave, perché non c'è combinatore coinvolto.

6

Non hai un combinatore (spazio, >, + ...) così nessun bambino sarà coinvolto, mai.

Tuttavia, si potrebbe evitare la necessità di jQuery utilizzando un ID e getElementById, o si potrebbe utilizzare il vecchio getElementsByName("frmSave")[0] o anche di più document.forms['frmSave']. jQuery non è necessario qui.

+0

'getElementsByName'. Bello. –

+0

'document.querySelector (" form [nome = 'frmSave'] ")' potrebbe funzionare anche, ma solo nei browser più recenti. –

+0

So che non è necessario, ma sto lavorando con altro codice che richiede jQuery è per questo che lo sto usando per questo, grazie per la tua spiegazione 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

per rilevare se il modulo è presente, sto usando

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