поле формы jquery объектом формы - PullRequest
0 голосов
/ 22 июня 2011

У меня есть 2 разные формы, обе формы содержат поля ввода с одинаковым идентификатором поля, как можно получить поле ввода относительно объекта формы с помощью jquery.

<form name"f1">
<input type="text" id="quantity" />
</form>

<form name"f2">
<input type="text" id="quantity" />
</form>

Ответы [ 5 ]

2 голосов
/ 22 июня 2011

Вы не должны использовать один и тот же идентификатор несколько раз в одном и том же документе в соответствии со спецификацией (X) HTML.

Теперь все браузеры позволяют вам обойтись без этого, но невозможно выбрать вторую форму с помощью селектора идентификаторов, так как document.getElementById () вернет только первую.

Я бы исправил разметку, чтобы идентификаторы были разными. Если это невозможно, выберите вход, пройдя через форму:

$('form[name=f2]>input[type=text]:eq(0)')

или

$('form[name=f2]>#quantity'); // but please fix the IDs

Кроме того, я бы рекомендовал также указывать идентификаторы форм (отличные), поскольку выбор по имени может быть очень дорогим в IE, который должен просматривать все формы на странице и сравнивать атрибуты имени.

0 голосов
/ 22 июня 2011

Сначала вам нужно сделать свой идентификатор уникальным, возможно, классы могут работать лучше для вас:

<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();
0 голосов
/ 22 июня 2011

Вы не должны использовать один и тот же идентификатор более одного раза в документе.

В любом случае эта функция может это сделать:

function getFieldByForm(anyForm, fieldId) {
    if(typeof(anyForm) == "string")
        anyForm = $("#" + anyForm);
    return anyForm.find("#" + fieldId);
}

Функцию можно вызывать для любого из этихдвумя способами:

getFieldByForm($("form[name='f1']"), "quantity");

или

getFieldByForm("formId", "quantity");

Для второго вам нужно, чтобы формы имели идентификатор.

Вот вам рабочий пример.

0 голосов
/ 22 июня 2011

тот же идентификатор ?? Это нарушает стандарты XHTML. Вы можете обойтись без JQuery .. это будет быстрее

document.forms["f1"].name1

с

<form name="f1"><input name="name1" /></form>
0 голосов
/ 22 июня 2011
form1_quantity =    $('form[name="fl"] #quantity');
form2_quantity =    $('form[name="f2"] #quantity');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...