2012-01-22 10 views
0

私は動的な値を表示するフォームを作っています.Jquery関数にフォームアクションがあり、値を取っています。$(this).closest('tr') <input type="text" class="line_Order_ID" value="'.$Order_ID.'" size="5" readonly>.line_Order_IDから値を取り出し、PHPページに送りたいと思います。プロセス。送信時にフォームでthis.valのみを送信しますか?

jQueryの

$(document).ready(function(e) { 

    $('.viewThis').live({ 
     click: function() { 

     var $tr = $(this).closest('tr'); 
     var Order_ID = $('.line_Order_ID', $tr).val(); 

     $('form#ordersList').attr({ 
      action: "phpDump.php", 
      target: "_blank", 
     }).submit(); 

     return false; 
    } 
}); 
}); 

任意のアイデア?

+1

問題は何ですか? – Trevor

+0

最も簡単な方法は、同じクラスが複数ある場合は入力にIDを指定します。 'live()'は非推奨です。http://api.jquery.com/live/ – Zac

答えて

0

TRごとに1つだけ.line_Order_IDがある場合は、このようにそれを構築することができます。..

var Order_ID = $($tr + ' .line_order_ID').val(); 

あなたが持っているTRから横断を開始し、そこから適切な入力値を引く必要があること。

+1

'$ tr'はjQueryオブジェクトではありませんか?文字列を '$ tr'と連結するのは意味がありません。 – nnnnnn

+0

いいえ、それはそのための括弧内にある必要があります。たとえば、$(tr)です。 JavaScriptでの$の使用は、関数/オブジェクト/変数で使用できます。 – Tim

+0

私はもっと明示しよう:質問に定義されている '$ tr'変数は、jQueryオブジェクトが返す関数呼び出しの結果が代入されているので、jQueryオブジェクトはそうではありません。だから、終わりに文字列を連結するのは意味がありません。 – nnnnnn

1

あなたの既存のコードが既に問題の入力から値を得て、それをOrder_ID変数に入れているとすれば、その値をフォームに入れて送信する方法はあなたの質問ですか?

もしそうなら、最も明白な2つの方法は、それを非表示の入力フィールドに入れたり、クエリ文字列パラメータとして追加することだと思います。

フォームにこれを追加します(。使用したいものは何でもname - 明らかにそれはあなたがPHPで処理するだろうパラメータの名前です)

<input type="hidden" id="hiddenOrderId" name="orderId" /> 

その後

をあなたの関数で直前既存の.submit()追加:

$("#hiddenOrderId").val(Order_Id); 

(あなたはまた、動的に隠し入力を作成し、その値を設定していますが、Bに思えるので、可能性があり空白のウィンドウをターゲットにすると、おそらく複数回提出することができます。その場合、HTMLマークアップに直接1つの隠し入力を作成することは、最初のサブミットに対して動的に作成し、その後のサブミットに再利用することを心配するよりも、

EDIT:クエリ文字列に値を渡す:

$('form#ordersList').attr({ 
     action: "phpDump.php?orderId=" + encodeURIComponent(Order_Id), 
     target: "_blank", 
    }).submit(); 

あなたはidは常にプレーン数になります知っていればあなたは.encodeURIComponentを省略することができますが、ユーザーの入力データのためにあなたが文字を許可する必要がありますURIで特別な意味を持つもの

+0

これは正常に動作します。隠されたフィールドなしでそれを行う方法がありますか?それは '(this)' trの値を持つフォームを送信するだけでしょうか? – Monty

関連する問題