【发布时间】:2014-08-08 03:25:31
【问题描述】:
我正在制作一个在选择选项后自动提交表单的代码。提交按钮隐藏在表单上。我在表单中使用 ajax,因此更新将在同一页面中重新出现。任何帮助将不胜感激。
view.html.erb
<tbody>
<% @complaints.each do |complaint| %>
<tr>
<td id="priority">
<%= bootstrap_form_for complaint do |p| %>
<%= p.select(:priority,[['Selecione Nivel'],['Nivel Alto', {:class=>'btn-danger'}],['Nivel Mediano', {:class=>'btn-warning'}],['Nivel Bajo', {:class=>'btn-primary'}]])%>
<%= p.submit 'Update', :class => "btn" %>
<% end %>
</td>
<td><%= complaint.id %>
</tr>
<% end %>
</tbody>
HTML 输出
<form accept-charset="UTF-8" action="/complaints/4" class="edit_complaint" id="edit_complaint_4" method="post"><div style="display:none"><input name="utf8" type="hidden" value="✓" class="form-control input-sm" placeholder="Buscar"><input name="_method" type="hidden" value="patch" class="form-control input-sm" placeholder="Buscar"><input name="authenticity_token" type="hidden" value="E8gNdFLaMhswXNo3rUk/j875u5rk8j2Gx+NM9zGWrTA=" class="form-control input-sm" placeholder="Buscar"></div>
<div class="form-group"><label class="control-label" for="complaint_priority">Priority</label><div class="select2-container form-control" id="s2id_complaint_priority"><a href="javascript:void(0)" class="select2-choice" tabindex="-1"> <span class="select2-chosen" id="select2-chosen-3">Selecione Nivel</span><abbr class="select2-search-choice-close"></abbr> <span class="select2-arrow" role="presentation"><b role="presentation"></b></span></a><label for="s2id_autogen3" class="select2-offscreen">PriorityPriorityPriority</label><input class="select2-focusser select2-offscreen" type="text" aria-haspopup="true" role="button" aria-labelledby="select2-chosen-3" id="s2id_autogen3"><div class="select2-drop select2-display-none"> <div class="select2-search select2-search-hidden select2-offscreen"> <label for="s2id_autogen3_search" class="select2-offscreen">PriorityPriorityPriority</label> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="select2-input" role="combobox" aria-expanded="true" aria-autocomplete="list" aria-owns="select2-results-3" id="s2id_autogen3_search" placeholder=""> </div> <ul class="select2-results" role="listbox" id="select2-results-3"> </ul></div></div><select class="form-control select2-offscreen" id="complaint_priority" name="complaint[priority]" tabindex="-1" title="PriorityPriorityPriority"><option value="Selecione Nivel">Selecione Nivel</option>
<option class="btn-danger" value="Nivel Alto">Nivel Alto</option>
<option class="btn-warning" value="Nivel Mediano">Nivel Mediano</option>
<option class="btn-primary" value="Nivel Bajo">Nivel Bajo</option></select></div>
<input class="btn form-control input-sm" name="commit" type="submit" value="Update" placeholder="Buscar">
</form>
我的 jquery 代码
$(document).ready(function($) {
jQuery.fn.submitOnChange = function() {
this.find('input[type=submit]').remove();
this.find('input[type=select]').change(function() {
$(this).parents('form').submit();
});
return this;
}
$(function() {
$('.edit_complaint').submitOnChange();
});
});
This code hide the but dont submit.
【问题讨论】:
-
您的选择元素是表单元素的子元素吗?而且,您是希望通过 ajax 提交表单还是通过默认表单提交。
-
通过 ajax 与远程:true 和资产文件投诉.js 中的 jquery。此表单用于更新投诉优先级的状态(高、中、低)。
-
一旦ajax请求完成,你想更新什么元素?我可以马上给你一个解决方案,但我必须知道你的服务器发送给你的浏览器的内容(HTML)——这就是 jQuery 的作用。
-
你想要html输出???
-
是的,最小的 HTML;
form、select元素以及您希望将状态输出到的位置——html元素。
标签: javascript jquery select ruby-on-rails-4