2

我有以下由Rails生成form_tag的HTML:select_tag

<form accept-charset="UTF-8" action="/deployment_group/show_workflow_list" data-remote="true" id="show_workflow_list_form" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
  <select id="folder_name_foldernames" name="folder_name[foldernames]">
    <option value="RISK_ODS" selected="selected">RISK_ODS</option>
    <option value="DETAIL_ADJUSTMENT">DETAIL_ADJUSTMENT</option>
    <option value="ODS_STAGE">ODS_STAGE</option>
    <option value="FINANCE_DM1">FINANCE_DM1</option>
  </select>
</form>

让我知道我需要编写的 JQuery 代码,以便我可以在更改下拉列表中的选择值时提交表单。请在此处看到,当我使用 :onchange 时,它​​是一个 html 选项,表单作为 html 而不是 JS 表单提交。所以,我不能使用:onchange。

我知道我需要在我的 application.js 文件中写这样的东西:

$(#folder_name_foldernames).change(function(){
    $(#show_workflow_list).submit()
});

我在 application.js 文件中使用了上面的代码,但我必须删除“require_tree”。当我遇到一些错误时,我添加了

$('#folder_name_foldernames').change = () ->
  $('#show_workflow_list_form').submit() 

到我的 deployment_group.js.coffee 文件(deployment_group 是我与上述视图相关的控制器)

但是当我更改下拉列表中的选择时,我仍然没有看到任何变化。请帮忙。

4

3 回答 3

1

我通过以下方式解决了问题:

<%= f.select :foldernames, options_for_select(@folders, @folders.first), {}, {:onchange=>"myfunc()"}%>

我加了

<script type="text/javascript">
function myfunc()
{
    $('#folder_name_foldernames').change(function(){     $('#this_form').submit(); }); 
}
</script>

并且表单作为 JS 而不是 HTML 提交。如果有人可以向我解释为什么将其作为 JS 而不是 HTML 提交,那将非常有帮助当我编写:onchange=> this.form.submit 时,相同的代码将作为 HTML 提交

于 2012-07-26T19:00:33.570 回答
0

如果你给id你的<form>标签一个,你可以在id那里使用。

喜欢:

<form accept-charset="UTF-8" action="/deployment_group/show_workflow_list" data-remote="true" id="this_form" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
<select id="folder_name_foldernames" name="folder_name[foldernames]"><option value="RISK_ODS" selected="selected">RISK_ODS</option>
    <option value="DETAIL_ADJUSTMENT">DETAIL_ADJUSTMENT</option>
    <option value="ODS_STAGE">ODS_STAGE</option>
    <option value="FINANCE_DM1">FINANCE_DM1</option>
</select>

接着:

$('#folder_name_foldernames').change(function(){
    $('#this_form').submit();
});

不要忘记将选择器用引号括起来,否则会出现 JavaScript 错误。

于 2012-07-26T17:56:03.977 回答
0

尝试用“application.js.coffee”替换“application.js”并添加#= require_self到文件中。

于 2012-07-26T18:18:42.463 回答