在Rails中自动提交HTML选择下拉列表

时间:2012-09-24 10:14:23

标签: javascript jquery ruby-on-rails ruby-on-rails-3 html5

我有一个简单的下拉菜单,使用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控制台,然后按预期运行,更改菜单确实提交表单。那么我应该如何在rails中编写coffeescript代码以允许在更改选择菜单时提交表单?

我正在使用Rails 3.2.8。

2 个答案:

答案 0 :(得分:2)

尝试将代码放在$(document).ready () ->块中。

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

答案 1 :(得分: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();
    }
相关问题