jQuery选择器按名称获取表单

时间:2012-12-06 16:59:42

标签: jquery jquery-selectors

我有以下HTML:

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

要知道,我无法修改HTML以添加id或其他内容。

这就是我试图通过它的名字获取form元素:

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

console.log(frm);

(但我相信上面的代码会尝试在frmSave内找到form名称中不是我需要的子元素。

如何实现这一目标,是否可以通过form并使用选择器获取name


更新

我在原始代码中做了错误的方式(我在选择器中使用了一个名为“combinator”的空间),而不是在这里的代码片段中,所以jQuery试图获取所有需要名称的子元素因为什么都没有回来,我问自己出了什么问题。

接受的答案给出了更好的解释,所以一点空间可以改变一切 - 下次我会睡得正确: - )

4 个答案:

答案 0 :(得分:69)

$('form[name="frmSave"]')是正确的。你提到过你认为这会让所有孩子在表格中得到名字frmsave;只有在表单和选择器之间有空格或其他组合符时才会发生这种情况,例如:$('form [name="frmSave"]');

$('form[name="frmSave"]')字面意思是查找名称为frmSave 的所有表单,因为没有涉及组合器。

答案 1 :(得分:9)

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

答案 2 :(得分:6)

你没有组合子(空格,>+ ......)所以没有孩子会参与其中。

但是,您可以使用IDgetElementById来避免使用jQuery,或者可以使用旧的getElementsByName("frmSave")[0]或更旧的document.forms['frmSave']。这里不需要jQuery。

答案 3 :(得分:2)

为了检测表格是否存在,我使用

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