2012-12-06 116 views
30

拿到表格,我有以下htmljQuery選擇按名稱

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

只知道,我無法修改html添加一個id或別的東西,所以我可以很容易地得到form元素在一個變量中。

這是我一直試圖讓form元素通過它的名字:

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

(但我認爲這將嘗試獲得與名稱frmSave兒童元素中form這是錯誤的東西我需要)。

我怎樣才能做到這一點,是有可能得到一個form僅由name與選擇?


更新:我是通過讓孩子們元素基督教瓦爾加解釋說做了錯誤的方式在我的源代碼。但是,我把它放在正確的位置,我的壞處。

+3

您的代碼是正確的。 –

+0

你肯定有從執行停止此頁面上沒有其他JS錯誤?檢查控制檯日誌。 – webnoob

+1

我想這是正確的,但由於某種原因它在控制檯打印出'null',這就是爲什麼我問,也許其他事情可能是問題,但我會再次檢查一切。 –

回答

56

$('form[name="frmSave"]')是正確的。你提到你以爲這會讓所有名字爲frmsave的孩子在表格裏面;這隻會發生,如果有形式和選擇之間,例如空格或其他組合子:$('form [name="frmSave"]');

$('form[name="frmSave"]')字面意思查找所有形式的名稱frmSave,因爲沒有涉及組合子。

6

你沒有組合子(空間,>+ ...),所以沒有孩子會涉足,直到永遠。

然而,你可避免的jQuery需要通過使用IDgetElementById,或者你可以使用舊getElementsByName("frmSave")[0]或更老document.forms['frmSave']。 jQuery在這裏是不必要的。

+0

'getElementsByName'。尼斯。 –

+0

'document.querySelector(「form [name ='frmSave']」)'也可以,但只適用於較新的瀏覽器。 –

+0

我知道這是不必要的,但我正在處理其他需要jQuery的代碼,這就是爲什麼我使用它的原因,謝謝你的解釋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

爲了檢測是否形式存在,我使用的

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