检测复选框更改

时间:2014-04-28 08:31:18

标签: 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" 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"
            });
        }

我现在想摆脱这个保存按钮。相反,我希望每次用户选择新的复选框值时都会触发提交事件。如何使用updateSettings方法绑定任何复选框中的更改,而不是单击“保存”按钮的事件。

3 个答案:

答案 0 :(得分:4)

您可以使用input元素的change event绑定将在复选框的选中状态更改时调用的处理程序

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

答案 1 :(得分:0)

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

像这样:

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

答案 2 :(得分:0)

像这样

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

   //your code goes here
});

OR

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

   //your code goes here
   return true;
});

干杯