Флажок Хранение в локальном хранилище

0

Я могу хранить текст так, как хочу, но не могу получить флажки для правильной работы. Он сохраняет значения флажка как "включено", независимо от того, установлен ли он или нет. Как я могу установить, чтобы сохранить "выключено" по умолчанию и "включено", если отмечено?

что бы достичь этого:

var value = $(this).val() && $(this).prop(checked);

JS Fiddle: http://jsfiddle.net/cRJ23/17/

Storage.prototype.setObj = function (key, obj) {
    return this.setItem(key, JSON.stringify(obj))
}
Storage.prototype.getObj = function (key) {
    return JSON.parse(this.getItem(key))
}

var Survey = {},
    Surveys = {},
    save = function () {
        $('input, select, textarea').each(function () {
            var value = $(this).val(),
                name = $(this).attr('name');
            console.log('Saving');
            console.log(name + ':' + value);
            Survey[name] = value;
        });

        if (localStorage.getObj('Surveys') != null) {
            Surveys = localStorage.getObj('Surveys');
        }
        Surveys[$('#FirstName').val() + '.' + $('#LastName').val()] = Survey; //store in big list
        localStorage.setObj('Surveys', Surveys);

    }
Теги:
checkbox
local-storage

3 ответа

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

Надеюсь это поможет:

var value = $(this).val();
var   name = $(this).attr('name');

if($(this).hasClass('checkers')){
    value = $(this).is(":checked")
    if(value){
        value='on';
    }else{
        value='off';
    }
}

http://jsfiddle.net/juvian/cRJ23/22/

Вы не должны использовать.val, чтобы проверить, установлен ли флажок, использовать.is('checked')

1

Вместо использования .val() чтобы получить состояние флажка, вы должны использовать .prop() или свойство .checked

   $('input, select, textarea').each(function () {
        var value = ($(this).is('[type="checkbox"]')) ? this.checked :$(this).val(),
            name = $(this).attr('name');
        console.log('Saving');
        console.log(name + ':' + value);
        Survey[name] = value;
    });

Рабочий пример: http://jsfiddle.net/cRJ23/24/

0

Рабочая скрипка http://jsfiddle.net/jFeLv/

Функция val не работает так, как вы ожидали бы с помощью флажков, способ получить истинное или ложное из них - использовать функцию is (': checked').

$(this).is(':checked')

Скрипка - это модифицированная версия вашего кода, изменяя одну строку, которая, кажется, работает нормально, сокращая if if для проверки переменной "value", чтобы убедиться, что это флажок.

($(this).attr('type','checkbox') ? value = $(this).val() : value = $(this).is(':checked'));

Надеюсь, это поможет.

Ещё вопросы

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