我有两种不同的形式,两种形式都包含具有相同字段ID的输入字段,如何使用jquery获取关于表单对象的输入字段。
<form name"f1">
<input type="text" id="quantity" />
</form>
<form name"f2">
<input type="text" id="quantity" />
</form>
答案 0 :(得分:2)
根据(X)HTML规范,您不得在同一文档上多次使用相同的ID。
现在,所有的浏览器都让你逃脱了,但是没有办法通过ID选择器选择第二个表单,因为document.getElementById()只会返回第一个表单。
我会修复标记,因此ID是不同的。如果无法做到这一点,请通过以下表单选择输入:
$('form[name=f2]>input[type=text]:eq(0)')
或
$('form[name=f2]>#quantity'); // but please fix the IDs
另外,我建议给出表单(不同的)ID,因为在IE中选择名称可能非常昂贵,它必须遍历页面上的所有表单并比较名称属性。
答案 1 :(得分:0)
form1_quantity = $('form[name="fl"] #quantity');
form2_quantity = $('form[name="f2"] #quantity');
答案 2 :(得分:0)
相同的ID?它违反了XHTML标准。你可以不用jquery ..这会更快
document.forms["f1"].name1
与
<form name="f1"><input name="name1" /></form>
答案 3 :(得分:0)
您不应在文档中多次使用相同的ID。
无论如何,这个功能可以做到:
function getFieldByForm(anyForm, fieldId) {
if(typeof(anyForm) == "string")
anyForm = $("#" + anyForm);
return anyForm.find("#" + fieldId);
}
您可以通过以下两种方式调用该函数:
getFieldByForm($("form[name='f1']"), "quantity");
或
getFieldByForm("formId", "quantity");
对于第二个,您需要表格具有ID。
答案 4 :(得分:0)
首先,您需要使您的ID独一无二,也许您的课程可能更适合您:
<form id="f1" name"f1">
<input type="text" id="quantity" class="quantity" />
</form>
<form id="f2" name"f2">
<input type="text" id="quantity2" class="quantity" />
</form>
form1Qty = $('form[name="fl"] .quantity').val();
form2Qty = $('form[name="f2"] .quantity').val();
//OR
form1Qty = $('#fl .quantity').val();
form2Qty = $('#f2 .quantity').val();