1

我有一个使用 HTML 的 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。

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 回答