2012-01-11 18 views
1

私はフォーム入力要素の値を取得しようとしていましたが、私はそれに幸運を得ないだけです。テーブル内の複数の隠しフォーム値の値を取得

PHPでwhileループ内に次のような形式があるので、複数のフォームがあります。

<form method='POST' action=".$_SERVER['SCRIPT_NAME']." name='form_set_deadline' class='form_set_deadline'> 
    <input type='hidden' value='".$data3['unique_name']."' name='file_id' class='file_id' /> 
    <input type='hidden' value='".$user_id."' name='client_id' class='client_id' /> 
    <table> 
     <tr> 
      <td align='left'><input type='button' name='set_file_options' value='Submit' class='set_file_options' /></td> 
     </tr> 
    </table> 
</form> 

今、私はjqueryのの隠されたフィールドの値を取得しようとしていますが、ちょうど隠しフィールドの値にアクセスする方法がわかりません。ページにはこれらのフォームが複数存在することを覚えておいてください。関数内に含まれるjqueryフォームを次に示します。

function setFileOptions(){ 
    $('.set_file_options').each(function(e){ 
     $(this).unbind("click").click(function(e){ 
      e.preventDefault(); 
      //set form variables 
      var file_id = // DON'T KNOW HOW TO GET THE HIDDEN FIELD INPUT VALUE? 

      alert(file_id); 
     }); //END THIS CLICK FUNCTION 
    }); 
} //END MAIN FUNCTION 

ヘルプ/ヒントありがとうございました!

はだからすべてから受け取ったすべての入力した後、私はすべてのフォームデータを取得するために、次の使用することを決定した:

var form_data = $(this).closest('form').serialize(); 

おかげで再び!また

+0

は 'input'または' form'名前のユニークなていますか? – Biotox

+0

これを行うにはもっとエレガントな方法があります!どのように単純なボタン要素(jQuery UIのスタイル)を入れて、内部的にjavascriptに変数を渡すのではなく、隠されたフォーム要素でUIをガムします。おそらく完全な文脈を与えられれば、それをきれいにすることができます。 – bpeterson76

+0

まあ、テキストエリア、テキスト入力など、他の多くのフォーム要素があり、JavaScriptに渡そうとしています。 – user482520

答えて

3
var file_id = $(this).closest('form').find('.file_id').val(); 

、純粋なJSソリューション:あなたは何があなたのクラス名に接続されていない場合は

var hiddens = $(this).closest('form').find(':hidden'); 
//hiddens.eq(0) = file_id 
//hiddens.eq(1) = client_id 

var file_id = this.form.elements['form_id'].value; 

すべて<input type="hidden"/>の要素を選択するセレクタこれらの属性を削除し、名前属性セレクタを使用することをお勧めします。

var file_id = $(this).closest('form').find('[name="file_id"]').val(); 
+0

甘い!これは動作します! $(this).parent( 'form')を試してみました。find( '。file_id')。しかしこれはうまくいかなかった。とにかく、ありがとう! – user482520

+0

@ user482520親から要素を選択するには 'parents'を使ってください。最も近い親を選択したいので、 'nearest'を使うべきです。 'parents 'を使った別の構文は' $(this).parents(' form:first ') 'です(少し遅い)。 –

+0

^実際には、 'を置き換えると、あなたの解決策もうまくいくはずです。parent() 'を' .parents() 'で置き換えます。もう一つは一致する要素が見つかるまでdomツリーを移動します。最初のものは直接の親をチェックするだけです:) – bardiir

0
var file_id = $(this).closest('table').siblings('.file_id').val() 
1

あなたにフォーム

内部に隠しフィールドを取得する必要がありますそして、あなたはすべてを取得する反復処理が必要な場合がありますので、複数のフィールドがある可能性が//

$(this).closest('form').find(':hidden');、これを試してみてください隠しフィールド、

var field_val = []; 

$.each ($(this).closest('form').find(':hidden'), function (index) { 
    field_val [$(this).attr('class')] = $(this).val(); 
}); 
0

あなたが試してみました:

var file_id = $('input[name="file_id"]').val(); 
0

これを試してみてください:

var fileid = $(this).parents('form').find('.file_id').val(); 
関連する問題