2011-06-22 4 views
0

私は2つの異なるフォームを持っています、両方のフォームは、同じフィールドIDを持つ入力フィールドをどのようにjqueryを使用してフォームオブジェクトに関して入力フィールドを得ることができます。jqueryフォームフィールドオブジェクトby

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

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

答えて

0
form1_quantity = $('form[name="fl"] #quantity'); 
form2_quantity = $('form[name="f2"] #quantity'); 
2

あなたは(X)HTMLの仕様に応じて、同じ文書に同じIDを複数回使用することはできません。

すべてのブラウザでそれを取り除くことができますが、IDセレクタで2番目のフォームを選択する方法はありません。document.getElementById()は最初のフォームのみを返します。

IDが異なるようにマークアップを修正します。それができない場合は、フォームを経由して入力を選択します。

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

または

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

また、私は名前で選択するよう、あまりにも形式に(明確な)のIDを与えることが非常に高価になる可能性が推薦しますIEでは、ページ上のすべてのフォームを調べ、名前属性を比較する必要があります。

0

同じID ??それはXHTML標準に違反します。あなたは...これが速く

document.forms["f1"].name1 

<form name="f1"><input name="name1" /></form> 
0

とあなたは文書内で複数回、同じIDを使用することになっていないだろうjqueryのなしで行うことができます。

とにかくこの関数はそれを行うことができます:

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

あなたは、この2つの方法のいずれかでfuncionを呼び出すことができます:あなたは1秒間

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

または

getFieldByForm("formId", "quantity"); 

IDを持つフォームが必要です。

Here you have a working example.

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();