我在 Rails 中通过 form_tag
和 select_tag
生成了以下 HTML:
<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="✓" /></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 代码,以便我可以在下拉列表中选择值发生更改时提交表单。请参阅here当我使用 :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是我与上述 View 相关的 Controller )
但是当我更改下拉列表中的选择时,我仍然没有看到任何变化。 请帮忙。
最佳答案
我通过以下方式解决了问题:
<%= 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 形式提交
关于jquery - Ruby on Rails : Submit a form as a JS based on a change in select box,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11675114/