在复选框 onchange 上提交的表单不提交最后一个选中的框

Form submitting on checkbox onchange doesnt submit the last checked box

我有一个带有复选框和末尾提交按钮的表单。 select编辑并提交表单后,它会发布到服务器,我可以更改查询,以便它按复选框值进行过滤。

HTML & JS

<input id="category-1" class="filter-checkbox" type="checkbox" value="1" name="filter-categories[]" data-fid="1" checked="">
<label for="category-1">Clothing</label>


jQuery(document).ready(function ($) {
    // FILTERS
    $('#form-filter .filter-options input[type="checkbox"]').change(function (e) {
        $('#form-filter').submit();
    });
});

如果我评论 javascript 规则,只需 select 一个框并点击提交一切正常,但如果我打开 javascript 我点击 link - 表单提交,但不更改值。似乎提交速度比更改速度更快,所以值没有更改和发送。

有人吗?谢谢!

您应该对复选框使用 click 事件,因为 change 事件发生在复选框的值实际更改之前。

让我知道它是否有效。干杯!

<input id="category-1" class="filter-checkbox" type="checkbox" value="1" name="filter-categories[]" data-fid="1" checked="">
<label for="category-1">Clothing</label>


jQuery(document).ready(function ($) {
    // FILTERS
    $('#form-filter .filter-options input[type="checkbox"]').click(function (e) {
        $('#form-filter').submit();
    });
});

您是否在表单提交事件中执行任何其他功能?通常情况下,表单可以像这样点击复选框提交

$('#checkbox').click(function() { 
    if(this.checked) {//just for checking
        //Then trigger the form submit event
        $("#form").trigger('submit');
    } 
    else{
       //do else.
    }
   });

好吧,这让我发疯,但我解决了它。我以某种方式认为有一个 jquery 错误,就像我提交之前没有选中复选框一样。事实并非如此,问题出在我的 PHP.

jQuery submit() 函数不发送提交按钮的值。在我的 PHP 代码中,我检查了是否设置了提交按钮,在我看来总是如此,但现在不是了。所以 if (!empty($_POST['submit-btn'])) { 是假的,我的脚本停止工作了。

谢谢大家