2017-10-03 5 views
0

私には2つのパラメータを示す表があります。私がしたいのは、ボタンがクリックされたときにこれらの各パラメータの値を変更することです。したがって、各パラメータには独自の固有のID(jinja2で作成)を持つ独自のボタンがあります。値を変更するために、私は関数内の引数としてパラメータの名前を取らなければならない、下の写真を見てください。javascriptで複数のIDを持つときに、異なる引数で関数を実行するにはどうすればよいですか?

my actual setup

は、だから私はあることを私の入力ボックスと私のボタンを持っていますクリック:

<td> <input type=number size=5 id="{{key}}"> </td> 
<td> <button onClick="change('{{key}}')" name="{{key}}">change value</button> </td> 

難しい部分は、私の機能は以下のように記述されているので変更は、Pythonスクリプトを実行することによって行わなければならず、ということである:

function change(key){ 
$.getJSON($SCRIPT_ROOT + '/_change_value', { 
    a: $('input[name="key"]').val(), 
    b: $('button[name="key"]').val()}, function(data) { alert("Value was changed to " + data.result);}); 

}

私はテスト目的のために、すべてがうまくいったかどうかをチェックするために、ただを返すpython関数を作成しましたが、残念なことに。

@app.route('/_change_value') 
def change_value(): 
a = request.args.get('a', 0, type=int) 
b = request.args.get('b', 0, type=int) 
return jsonify(result=a) 

と常に0が返されます...私は誰かが私が値キーが渡されていないかなり確信しているこの で私を助けることができるならばうれしいです。おかげでたくさん事前に

編集:私はこの質問を投稿ミスを犯し、idが代わりに入力の名前で存在しているが、それは私の問題を解決できなかった、まだ...ここ

+0

'name =" key "' ...また 'name =" key "を持つボタンもありません(' {{key}} 'が' key'にならない限り、 {{key}} '静的な値' key'の場合) –

+0

@Diamondxキャプチャしたい値は何ですか? 1つはパラメータ、次に入力テキストボックス値、それ以外は何ですか? – Shiladitya

+0

私の関数が機能するためには、{{key}}であるパラメータの名前を渡す必要がありますが、入力テキストボックスと同じにする必要があります。また、パラメータの名前と同じにする必要があります。 – Diamondx

答えて

0

あなたはsolutioに行きますhttps://jsfiddle.net/1dvjqy11/

$('button').click(function(){ 
 
    var a = $(this).closest('tr').find('input[type="number"]').val(); 
 
    var b = $(this).closest('tr').find('td').first().html(); 
 
    console.log(a, b); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <thead> 
 
    <tr> 
 
     <th>Parameter</th> 
 
     <th>Value</th> 
 
     <th></th> 
 
     <th></th> 
 
    </tr> 
 
    </thead> 
 
    <tbody> 
 
    <tr> 
 
     <td>GPS_Inject_to</td> 
 
     <td>127</td> 
 
     <td> 
 
     <input type="number" size=5 /> 
 
     </td> 
 
     <td> 
 
     <button> 
 
      Change Value 
 
     </button> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td>RPM2_SCALING</td> 
 
     <td>1</td> 
 
     <td> 
 
     <input type="number" size=5 /> 
 
     </td> 
 
     <td> 
 
     <button> 
 
      Change Value 
 
     </button> 
 
     </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

私は親trを取得するためにjQuery closestを使用して子エルを見つけるために​​メソッドを使用しましたements。

希望すると、これが役立ちます。

+0

これは働いていた、私はそれを少し微調整する必要がありました: <スクリプトタイプ=テキスト/ javascriptの> $(関数(){ $( 'ボタン#の計算')バインド( 'クリック'、機能(){ 。 $ .getJSON($ SCRIPT_ROOT + '/ _change_value'、{ a:$ this).closest( 'tr')。find( 'input [type = "number"]')。val()、 b:$ }、関数(データ){ アラート(data.result); }); falseを返す }); }); – Diamondx

+0

@Diamondxそれは素晴らしいです。あなたが満足すれば、答えを受け入れてください。 – Shiladitya

関連する問題