Обнаружить изменение флажка

0

У меня есть список элементов флажка.

<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 ответа

4
Лучший ответ

Вы можете использовать событие изменения входного элемента для привязки обработчика, который будет вызываться при изменении состояния флажка

var self = this;
$('input[name="Settings"]').change(function () {
    self.updateSettings();
});
  • 0
    Благодарю. это работает нормально, поскольку вызов метода updateSettings. Но мои данные не обновляются с помощью вызова ajax. Обновляется кнопкой сохранения, но не изменением флажка. Я обновил вопрос.
  • 0
    Вместо того, чтобы получать «Настройки = 1» в качестве formData при выборе первого флажка, я получаю «Настройки = 1 и Настройки = 4», которое является как старым, так и новым значением. Вот почему значения не обновляются.
0

как это

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

   //your code goes here
});

ИЛИ

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

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

ура

0

Вы должны привязать это событие к своему флажку

как это:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню