0

RJSを使用して2つのフィールドを交換する方法を理解しようとしています...値を置き換える方法は知っていますが、それを読み取る方法を理解できないようです。

RJSを介して値を読み取ることはできませんか?交換するだけですか?

<%= link_to_function "Swap" do |page| 
            #to_value = page[:currency_to].value
            page[:currency_from].value = to_value
            page[:currency_to].value = "test"
        end %>

http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper/JavaScriptGenerator/GeneratorMethods.html#M001664

4

3 に答える 3

1

以下の両方をテストしました。

<%= link_to_function "Swap", 'var tmp_frm = $("#currency_from").val();
                              var tmp_to = $("#currency_to").val();
                              $("#currency_from").val(tmp_to);
                              $("#currency_to").val(tmp_frm);'%>

またはさらに良い

<%= link_to_function "Swap", 'var tmp_frm = $("#currency_from").val();
                              $("#currency_from").val($("#currency_to").val());
                              $("#currency_to").val(tmp_frm);'%>

HTML によっては、ポンド記号を削除する必要がある場合があります。

<%= link_to_function "Swap", 'var tmp_frm = $("currency_from").value;
                                      var tmp_to = $("currency_to").value;
                                      $("currency_from").value = tmp_to;
                                      $("currency_to").value = tmp_frm;'%>
于 2009-09-03T22:15:33.513 に答える
0

プロトタイプや rjs についてはよくわかりませんが、プロトタイプ API をざっと見てみると、getValue()が示されています。page[:currency_to]これは、単なる DOM 要素ではなく、プロトタイプ要素を返すことに関係していると思います。

交換してみるかな

to_value = page[:currency_to].value

to_value = page[:currency_to].getValue()

rjsファイルで必要なjavascriptを使用できますか? Ruby が Javascript を「レンダリング」しているので、私の推測ではノーです。

あなたがリンクしたRails APIのセクションは、少し誤解を招くと思います。それらは実際の「値」を参照しているようには見えず、ブロックに渡される名前として値を使用しているだけです。

于 2009-09-03T20:50:41.500 に答える
0
<%= link_to_function "Swap", 'var tmp_frm = $("currency_from").value;
                                      var tmp_to = $("currency_to").value;
                                      $("currency_from").value = tmp_to;
                                      $("currency_to").value = tmp_frm;'%>
于 2009-09-03T22:36:59.453 に答える