【发布时间】:2019-03-28 09:12:08
【问题描述】:
我想检查在加载时检查了多少个复选框,并且不允许超过特定数量的复选框。
我有以下表格:
<div id="checkbox" class="">
<%= form.collection_check_boxes(:category_ids, Category.all, :id, :name, :multiple => true) do |c| %>
<%= c.label class:"form-check-inline" do %>
<%= c.check_box + c.text %>
<% end %>
<% end %>
</div>
那么这个Javascript:
<script>
$(document).on('turbolinks:load', function(){
$('#checkbox input:checkbox').change(function () {
var $cs=$('#checkbox input:checkbox:checked');
if ($cs.length >= 4) {
$('#checkbox input:checkbox:not(:checked)').attr("disabled", true);
}
else{
$('#checkbox input:checkbox').attr("disabled", false);
}
});
});
</script>
这可行,但它不会检查负载。因此,从技术上讲,有人可以从第一次提交中选择 4 个,然后重新更新并检查另一个为 5 个,依此类推。
这可行,但我想知道是否可以将这段代码简化为一个:
$(document).on('turbolinks:load', function(){
$('#checkbox input:checkbox').change(function () {
var $cs=$('#checkbox input:checkbox:checked');
if ($cs.length >= 4) {
$('#checkbox input:checkbox:not(:checked)').attr("disabled", true);
}
else{
$('#checkbox input:checkbox').attr("disabled", false);
}
});
});
$(document).on('turbolinks:load', function(){
var $cs=$('#checkbox input:checkbox:checked');
if ($cs.length >= 4) {
$('#checkbox input:checkbox:not(:checked)').attr("disabled", true);
}
else{
$('#checkbox input:checkbox').attr("disabled", false);
};
});
这是可能的还是唯一的选择?
【问题讨论】:
标签: javascript jquery ruby-on-rails ruby