挪动端安卓和IOS开发框架Framework7教程-表单存储(form storage)
移动端安卓和IOS开发框架Framework7教程-表单存储(form storage)
Framework7 可以很方便存储和解析表单的数据,特别是在 Ajax 加载的页面。并且,当你再次加载相同的页面之后,Framework7 可以自动帮你填充上次的内容!
启用表单自动存储
要启用表单自动存储功能,只需要:
- 在表单上增加一个 "store-data" class
- 在表单上增加一个 id 属性。如果没有 id, 无法正常工作的。
- 确保你的input都有 "name" 属性,没有name属性的input将会被忽略
不需要任何JS代码就可以实现表单自动存储
- <!-- Form has additional "store-data" class to enable form storage on this form -->
- <form id="my-form" class="list-block store-data">
- <ul>
- <li>
- <div class="item-content">
- <div class="item-inner">
- <div class="item-title label">Name</div>
- <div class="item-input">
- <!-- Make sure that input have "name attrobute" -->
- <input type="text" name="name" placeholder="Your name">
- </div>
- </div>
- </div>
- </li>
- <li>
- <div class="item-content">
- <div class="item-inner">
- <div class="item-title label">E-mail</div>
- <div class="item-input">
- <!-- Make sure that input have "name attrobute" -->
- <input type="email" name="email" placeholder="E-mail">
- </div>
- </div>
- </div>
- </li>
- ... other form fields ...
- </ul>
- </form>
复制
实例预览
JS API
这是怎么实现的?其实非常简单,Framework7 会在表单有任何改动的时候调用 formToJSON,然后在"pageInit" 事件触发时调用 formFromJSON。
所有的表单数据都存储在 localStorage 中,每一个表单都有一个自己的key,key的规则是:localStorage.f7form-[formID]
,其中 [formId] 就是表单的 id 属性。每一个这样的key都包含了一个表单的所有数据。
下面是一些管理表单数据的可用的方法
myApp.formGetData(formId) - 获取id对应的表单的数据
- formId - 字符串 - form 的id
- 返回一个JSON数据
myApp.formDeleteData(formId) - 删除id对应的表单数据
- formId - 字符串 - form 对应的id
myApp.formStoreData(formId, formJSON) - store formJSON data for form with formId "id" attribute
myApp.formStoreData(formId, formJSON) - 把一个JSON数据存储到一个表单对应的localStorage中
- formId - 字符串 - 表单的id属性
- formJSON - 对象 - 要存储的JSON对象
- <form id="my-form2" class="list-block store-data">
- ... form fields ...
- </form>
- <div class="content-block">
- <p><a href="#" class="button get-storage-data">Get Data</a></p>
- <p><a href="#" class="button delete-storage-data">Delete Data</a></p>
- <p><a href="#" class="button save-storage-data">Save Data</a></p>
- </div>
复制
- var myApp = new Framework7();
- var $$ = Dom7;
- $$('.get-storage-data').on('click', function() {
- var storedData = myApp.formGetData('my-form2');
- if(storedData) {
- alert(JSON.stringify(storedData));
- }
- else {
- alert('There is no stored data for this form yet. Try to change any field')
- }
- });
- $$('.delete-storage-data').on('click', function() {
- var storedData = myApp.formDeleteData('my-form2');
- alert('Form data deleted')
- });
- $$('.save-storage-data').on('click', function() {
- var storedData = myApp.formStoreData('my-form2', {
- 'name': 'John',
- 'email': 'john@doe.com',
- 'gender': 'female',
- 'switch': ['yes'],
- 'slider': 10
- });
- alert('Form data replaced, refresh browser to see changes')
- });
复制
实例预览
Form storage JavaScript Events
formFromJSON | Form element | Event will be triggered after formFromJSON method called on form to fill form fields |
formToJSON | Form element | Event will be triggered after formToJSON method called on form to convert form fields to JSON |