【问题标题】:Local Storage function always storing radio button value本地存储功能始终存储单选按钮值
【发布时间】:2014-03-25 02:50:48
【问题描述】:

我的本​​地存储功能始终将“3”的单选按钮值存储在本地存储中,无论做出何种选择,我都不知道为什么。其他所有元素都正确存储。

请看我的小提琴以显示我的问题:http://jsfiddle.net/3u7Xj/148/

我的功能:

$('input, select, textarea').each(function() {
    var value = $(this).val();
    var name = $(this).attr('name');

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

    if (this.name.match(/^multiselect_/)) {//removes buggy append
        return false;
    }

    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);

【问题讨论】:

  • 为什么我被否决了
  • 我也不明白反对意见;这是一个关于代码的好问题,它有一个小提琴。

标签: javascript jquery html radio-button local-storage


【解决方案1】:

单选按钮都具有相同的名称,因为它们都是单选按钮,并且都有一个值。您的代码获取每个单选按钮的值并将每个值保存到“调查”对象的相同属性中。它看到的最后一个就是最终得救的那个。

您必须添加类似于复选框的代码:

if (!$(this).is(':radio') || this.checked)
  Survey[name] = value;

【讨论】:

  • 有什么简单的方法可以让它与我正在尝试做的事情一起工作吗?
【解决方案2】:

正如 Pointy 在没有给出任何答案的情况下提到的,您正在迭代“输入、选择、文本区域”元素。因此,在点击每个单选按钮后,第三个也是最后一个会被存储。

承认你把你的输入放在一个<form> 标记中,在纯 Javascript 中,你想要做的事情是这样的:

var items = document.forms;
for(var i in items){
    console.log(items[i].value);
}

这将显示<form> 元素中每个输入的值,并使用它们的名称进行迭代。

(不知道如何用 jQuery 做到这一点)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-02
    • 2021-12-02
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 2015-06-27
    相关资源
    最近更新 更多