Javascript 如何在加载时检查数字或复选框?
我想检查加载时选中了多少复选框,并且不允许超过特定数量的复选框 我有以下表格:Javascript 如何在加载时检查数字或复选框?,javascript,jquery,ruby-on-rails,ruby,Javascript,Jquery,Ruby On Rails,Ruby,我想检查加载时选中了多少复选框,并且不允许超过特定数量的复选框 我有以下表格: <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 %>
<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>
<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>
这是可能的还是唯一的选项?您可以通过触发其中一个复选框上的事件来消除重复:
$(document).on('turbolinks:load', function(){
$('#checkbox input:checkbox').change(function () {
// business logic
// now trigger event on first checkbox
}).first().change()
})
或者,将所有业务逻辑包装在一个命名函数中,并在页面加载时调用它,并将其作为引用传递给更改事件侦听器
function updateCheckboxes() {
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() {
updateCheckboxes();
$('#checkbox input:checkbox').change(updateCheckboxes)
})
function updateCheckboxes() {
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() {
updateCheckboxes();
$('#checkbox input:checkbox').change(updateCheckboxes)
})