Javascript 检测复选框更改

Javascript 检测复选框更改,javascript,jquery,Javascript,Jquery,我有一个复选框项目列表 <ul class="level_1 "> <li class="level_1"><input type="checkbox" name="Settings" class="Settings" value="1"><label> Text 1</label></li> <li class="level_1"><input type="checkbox

我有一个复选框项目列表

<ul class="level_1 ">
    <li class="level_1"><input type="checkbox" name="Settings"
        class="Settings" value="1"><label> Text 1</label></li>
    <li class="level_1"><input type="checkbox" name="Settings"
        class="Settings" value="2"><label> Text 2</label></li>
    <li class="level_1"><input type="checkbox" name="Settings"
        class="Settings" value="3"><label> Text 3</label></li>
</ul>

<div class="buttons">
    <input Value="Save" type="submit" id="settings_save_button"
        class="save yellow" name="settings_save_button"
        onclick="return false;" value="" />
</div>

bindData: function() {
    var self = this;
    $("#settings_save_button").click(function() {
        self.updateSettings();
    });
};

updateSettings: function () {
            var self = this;
            var ele = self.element;
            var formData = $(ele).find('form#edit_settings_form');
            $.ajax({
                type: "POST",
                url: formData.attr("action"),
                data: formData.serialize(),
                success: function (data) {
                    var userInfo = eval(data);
                    self.userRepo.updateUser(userInfo);
                    alert("saved");
                },
                error: function (req, textStatus, errorThrown) {
                    if (req.status == Portal.Constants.AJAX_VALIDATION_ERROR_CODE) {
                        self.addErrorMessageAndShowThem(eval("(" + req.responseText + ")"));
                    }
                },
                datatype: "json"
            });
        }
    文本1 文本2 文本3
bindData:function(){ var self=这个; $(“#设置#保存#按钮”)。单击(函数(){ self.updateSettings(); }); }; 更新设置:函数(){ var self=这个; var ele=自我要素; var formData=$(ele.find('form#edit_settings_form'); $.ajax({ 类型:“POST”, url:formData.attr(“操作”), 数据:formData.serialize(), 成功:功能(数据){ var userInfo=eval(数据); self.userRepo.updateUser(userInfo); 警报(“已保存”); }, 错误:函数(请求、文本状态、错误抛出){ if(req.status==Portal.Constants.AJAX\u验证\u错误\u代码){ self.adderrormessage并显示它们(eval(“(“+req.responseText+”)); } }, 数据类型:“json” }); }
我现在想去掉这个保存按钮。相反,我希望在用户每次选择一个新的复选框值时触发submit事件。如何使用updateSettings方法绑定任何复选框中的更改,而不是单击保存按钮的事件。

您可以使用输入元素的绑定处理程序,该处理程序将在复选框的选中状态更改时调用

var self = this;
$('input[name="Settings"]').change(function () {
    self.updateSettings();
});
您可以使用输入元素的绑定来绑定一个处理程序,当复选框的选中状态更改时,将调用该处理程序

var self = this;
$('input[name="Settings"]').change(function () {
    self.updateSettings();
});

您必须将该事件绑定到您的复选框

像这样:

$(".Settings").on('change',function(e){
    e.updateSettings();
});

您必须将该事件绑定到您的复选框

像这样:

$(".Settings").on('change',function(e){
    e.updateSettings();
});
像这样

$('input[name="Settings"]').bind('click',function(){

   //your code goes here
});

像这样干杯

$('input[name="Settings"]').bind('click',function(){

   //your code goes here
});


干杯

谢谢。就调用updateSettings方法而言,这很好。但是我的数据没有通过ajax调用得到更新。它通过“保存”按钮进行更新,但不通过复选框更改进行更新。我已经更新了问题。在选择第一个复选框时,我得到的不是“Settings=1”作为formData,而是“Settings=1&Settings=4”,这是旧值和新值。这就是值没有更新的原因。谢谢。就调用updateSettings方法而言,这很好。但是我的数据没有通过ajax调用得到更新。它通过“保存”按钮进行更新,但不通过复选框更改进行更新。我已经更新了问题。在选择第一个复选框时,我得到的不是“Settings=1”作为formData,而是“Settings=1&Settings=4”,这是旧值和新值。这就是值不更新的原因。