如何在 rails 中使用具有唯一值的 collection_select?
How to use collection_select with unique values in rails?
我怎样才能让 collection_select 有 5 个选项可供选择,当其中一个被选中时,下一个就不能再被选中(即,如果先选中 1,那么只有 2,3,4, 5 个可供选择)。
我有两个表:invoices 和 Invoice_Line_Items,invoice has_many Invoice_Line_items。 Invoice_Line_Items belongs_to 发票。选项是关系。例如,我不能为同一件商品开具两次发票。
<%= collection_select( :invoice_line_item, :invoice_line_item_id, @invoice_line_items, :id, :supplier_id, {}, {:multiple => true}) %>
谢谢
为此您需要一些 javascript。下面的示例仅基于两个下拉列表,第一个的值在选择后从第二个的选项列表中删除,但您应该能够根据需要的数量进行调整。注意 "collect_2.remove(collect_1.value - 1)" 部分 - 这是因为下拉对象的计数从 0 开始,但它们的值从 1 开始 - 有点混乱!
<!DOCTYPE html>
<html>
<body>
<%= form_tag("/users", method: "get", name:"frm") do %>
<%= collection_select(:invoice_line_item, :invoice_line_item_id, @invoice_line_items, :id, :supplier_id, {},{onchange: "myFunction()",id:"collect-1", multiple: true }) %><br>
<%= collection_select(:invoice_line_item, :invoice_line_item_id, @invoice_line_items, :id, :supplier_id, {},{id:"collect-2", multiple: true}) %><br>
<%= submit_tag("Go") %>
<% end %>
<script>
function myFunction() {
var collect_1 = document.getElementById("collect-1");
var collect_2 = document.getElementById("collect-2");
collect_2.innerHTML = collect_1.innerHTML;
collect_2.remove(collect_1.value - 1);
}
</script>
</body>
我怎样才能让 collection_select 有 5 个选项可供选择,当其中一个被选中时,下一个就不能再被选中(即,如果先选中 1,那么只有 2,3,4, 5 个可供选择)。
我有两个表:invoices 和 Invoice_Line_Items,invoice has_many Invoice_Line_items。 Invoice_Line_Items belongs_to 发票。选项是关系。例如,我不能为同一件商品开具两次发票。
<%= collection_select( :invoice_line_item, :invoice_line_item_id, @invoice_line_items, :id, :supplier_id, {}, {:multiple => true}) %>
谢谢
为此您需要一些 javascript。下面的示例仅基于两个下拉列表,第一个的值在选择后从第二个的选项列表中删除,但您应该能够根据需要的数量进行调整。注意 "collect_2.remove(collect_1.value - 1)" 部分 - 这是因为下拉对象的计数从 0 开始,但它们的值从 1 开始 - 有点混乱!
<!DOCTYPE html>
<html>
<body>
<%= form_tag("/users", method: "get", name:"frm") do %>
<%= collection_select(:invoice_line_item, :invoice_line_item_id, @invoice_line_items, :id, :supplier_id, {},{onchange: "myFunction()",id:"collect-1", multiple: true }) %><br>
<%= collection_select(:invoice_line_item, :invoice_line_item_id, @invoice_line_items, :id, :supplier_id, {},{id:"collect-2", multiple: true}) %><br>
<%= submit_tag("Go") %>
<% end %>
<script>
function myFunction() {
var collect_1 = document.getElementById("collect-1");
var collect_2 = document.getElementById("collect-2");
collect_2.innerHTML = collect_1.innerHTML;
collect_2.remove(collect_1.value - 1);
}
</script>
</body>