2012-12-06 111 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 
}