代码之家  ›  专栏  ›  技术社区  ›  Syntax Error ine

localstorage不允许我保存富文本字段

  •  0
  • Syntax Error ine  · 技术社区  · 6 年前

    我正在尝试将表单数据持久化到本地存储中。对于像文本框这样的常规html字段,这非常有效。不过,我有几个富文本字段似乎无法保存它们的数据。

    Razor字段标记(我正在使用MVC)

    <div class="form-group">
        @Html.LabelFor(model => model.Actions, htmlAttributes: new { @class = "control-label col-md-2" })
        @Html.TextAreaFor(model => model.Actions, new { @class = "form-control", rows = "4" })
        @Html.ValidationMessageFor(model => model.Actions, "", new { @class = "text-danger" })
    </div>
    

    由上面生成的HTML标记:

        <div class="form-group">
            <label class="control-label col-md-2" for="Actions">Actions</label>
            <textarea class="form-control" cols="20" id="Actions" name="Actions" rows="4">
    </textarea>
            <span class="field-validation-valid text-danger" data-valmsg-for="Actions" data-valmsg-replace="true"></span>
        </div>
    

    以下是从本地存储中保存/检索的代码。我对其他领域使用了完全相同的方法,而且效果很好。

    //save
    localStorage.setItem('Actions', document.getElementById('Actions').value);
    
    //restore
    var Actions = localStorage.getItem('Actions');
    document.getElementById('Actions').value = Actions;
    

    我试过用 document.getElementById('Actions').textContent 而不是 .value -这似乎使它保存正确,但我仍然无法恢复文本。当我看到 localStorage 对象,但它只报告“我的操作”字段中的以下文本: "<p><br></p>" ,除非使用 .textContent ,在这种情况下,我看到 <p>Test text<br></p>

    我在用 Summernote 提供富文本功能并认为这可能是问题的原因,但我不确定该尝试什么。控制台中根本没有报告任何错误。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Syntax Error ine    6 年前

    我用下面的代码修复了这个问题

    $('#Actions').summernote('code', Actions);

    代替

    document.getElementById('Actions').value = Actions;

    这会将字段中的html代码直接放入summernote文本区域中,包括所有格式等。 .actions ( .innerhtml 不起作用)