jQuery选择器按表单索引和输入名称

时间:2014-10-02 15:26:17

标签: javascript jquery forms

使用包含不同类的两个表单的以下页面,但每个表单都有一个具有相同名称的输入。

<form class='first_form'>
 <input name='test' value='1' />
</form>
<form class='second_form'>
 <input name='test' value='3'/>
</form>

我可以获取表单索引,我知道输入的名称,但我不知道输入的索引。

有没有办法用表单索引和输入名称链接选择器来获取值?

我尝试过链接,但似乎没有任何工作

var inputName = 'test';
Var formIndex = 1;

$('*[name="' + inputName + '"]' +' ' + '$("form").eq(' + formIndex + ')').val();

5 个答案:

答案 0 :(得分:3)

FIDDLE

var formIndex=0;
var inputName="txtbox";
vall= $("form:eq("+ formIndex+") input[name= "+ inputName +" ]").val();
alert(vall);

您的订单错误

答案 1 :(得分:2)

未经测试,但你可以这样做:

$('form:nth-of-type(1) input[name="test"]').val();

答案 2 :(得分:2)

$("form:nth-child("+formIndex+") input[name='"+inputName+"']").val();

答案 3 :(得分:2)

你可以用更聪明的方式做到:

var fieldName = 'test';
var formId = '.first_form'
$('form'+formId+' input[name='+fieldName+']).val()

使用命名选择器(如id或class)而不是索引。它将帮助你在将来找到正确的形式(当你有超过5的时候,很难计算你正在看的女巫:)) 但这太复杂了:))

我会提出这样的建议:

 var currentForm = $('form'+formId);
 currentForm//here you can put a log into console if element has not been found and find that bug sooner.
 currentForm.find('input[name='+fieldName+']').val()

答案 4 :(得分:2)

您可以使用以下任一方式直接在DOM中访问表单元素:

document.forms[formIndex]
document.forms[formName]

然后,您可以使用以下内容name引用输入元素:

document.forms[formIndex][inputName]
document.forms[formName][inputName]

然后将其包装在$(...)中以获得jQuery集合。在你的情况下:

var inputName = 'test',
    formIndex = 1;

$(document.forms[formIndex][inputName]);

我认为这是迄今为止最高效的方式,而且它也是可读的。

要添加一些细节,document.forms是文档中所有HTMLCollectionHTMLFormElement。在任何HTMLCollectionHTMLFormElement的情况下,您可以将其中的命名元素作为属性进行访问。