1

HTML の select タグを使用したシンプルなドロップダウン メニューがあります。select タグのコードは次のようになります。

<select name="menu_id" id="menu_id">
  <option selected="selected" value="1">Dinner</option>
  <option value="2">Lunch</option>
</select>

私のmenu.js.coffeeファイルには次のものがあります:

$("select#menu_id").change(-> $(this).closest("form").submit())

これは menu.js になります。

(function() {
  $("select#menu_id").change(function() {
    return $(this).closest("form").submit();
  });
}).call(this);

問題は、選択メニューを変更してもフォームが送信されないことです! 上記の menu.js コードも入力しません (そこにブレークポイントを配置し、メニュー オプションを選択した後に入力することはありません)。

次に、上記の内部をコピー(function() {して Firebug または Chrome コンソールに貼り付けると、期待どおりに動作し、メニューを変更すると実際にフォームが送信されます。では、選択メニューが変更されたときにフォームを送信できるようにするには、レールに coffeescript コードをどのように記述すればよいでしょうか?

Rails 3.2.8 を使用しています。

4

2 に答える 2

2

$(document).ready () ->コードをブロック内に配置してみてください。

$(document).ready () ->
  $("select#menu_id").change(-> $(this).closest("form").submit())
于 2012-09-24T16:04:02.060 に答える
0

document.ready 関数は、ページのリロードが発生した場合にのみ使用します。別の関数を使用して、onchange を使用して呼び出すことができます。

例:

    <select name="menu_id" id="menu_id" onchange="callThisFunction()">
    <option selected="selected" value="1">Dinner</option>
    <option value="2">Lunch</option>
    </select>

    <form name="myform"></form>

    function callThisFunction()
    {
      document.forms["myform"].submit();
    }
于 2012-09-24T13:28:31.210 に答える