Framework7 - Form Storage JavaScript API


Advertisements

Description

Form storage can be achieved by using JavaScript API. Here the Framework7 invokes formToJSON on any input change and formFromJSON on pageInit event. All forms data are stored in local storage with keys. The App's methods to manage these local storage keys with form data are listed below −

S.No Classes & Description Parameters
1

myApp.formGetData(formId)

When you open an animation, this event will get fired.

  • formId − It is the id attribute of required form of type string.

2

myApp.formDeleteData(formId)

When the opening of an animation is completed, this event will get fired.

  • formId − It is the id attribute of required form of type string.

3

myApp.formStoreData(formId, formJSON)

When you close an animation, this event will get fired.

  • formId − It is the id attribute of required form of type string.

  • formJSON − It is an object of JSON data to store.

Example

The following example demonstrates the use of form storage JavaScript API which stores data in local storage in Framework7 −

<!DOCTYPE html>
<html>

   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name = "apple-mobile-web-app-capable" content = "yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>Form storage JavaScript API</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
   </head>

   <body>
      <div class = "views">
         <div class = "view view-main">
            <div class = "pages">
               <div data-page = "home" class = "page navbar-fixed">
                  
                  <div class = "navbar">
                     <div class = "navbar-inner">
                        <div class = "left"> </div>
                        <div class = "center">Form Storage API</div>
                        <div class = "right"> </div>
                     </div>
                  </div>
                  
                  <div class = "page-content">
                     <form id = "myform" 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">
                                       <input type = "text" name = "name" placeholder = "Enter 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">
                                       <input type = "email" name = "email" placeholder = "Enter your e-mail">
                                    </div>
                                 </div>
                              </div>
                           </li>
                           
                           <li>
                              <div class = "item-content">
                                 <div class = "item-inner">
                                    <div class = "item-title label">Gender</div>
                                    <div class = "item-input">
                                       <select name = "gender">
                                          <option value = "male" selected>Male</option>
                                          <option value = "female">Female</option>
                                       </select>
                                    </div>
                                 </div>
                              </div>
                           </li>
                           
                           <li>
                              <div class = "item-content">
                                 <div class = "item-inner">
                                    <div class = "item-title label">Switch</div>
                                    <div class = "item-input">
                                       <label class = "label-switch">
                                          <input type = "checkbox" name = "switch" value = "yes" />
                                          <div class = "checkbox"></div>
                                       </label>
                                    </div>
                                 </div>
                              </div>
                           </li>
                        </ul>
                     </form>
                     
                     <div class = "content-block">
                        <p><a href = "#" class = "button button-fill button-round color-blue get-storage-data">Get Data</a></p>
                        <p><a href = "#" class = "button button-fill button-round color-red delete-storage-data">Delete Data</a></p>
                        <p><a href = "#" class = "button button-fill button-round color-green save-storage-data">Save Data</a></p>
                     </div>
                  </div>
               </div>
            </div>
         </div>
      </div>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
         
      <script>
         var myApp = new Framework7();
         var $$ = Dom7;

         $$('.get-storage-data').on('click', function() {
            var storedData = myApp.formGetData('myform');
            if(storedData) {
               alert(JSON.stringify(storedData));
            } else {
               alert('Yet there is no stored data for this form. Please try to change any field')
            }
         });

         $$('.delete-storage-data').on('click', function() {
            var storedData = myApp.formDeleteData('myform');
            alert('Form data is deleted')
         });

         $$('.save-storage-data').on('click', function() {
            var storedData = myApp.formStoreData('myform', {
               'name': 'William Smith',
               'email': 'williamsmith@tutorialspoint.com',
               'gender': 'male',
               'switch': ['yes'],
            });
            alert('Form data is replaced, refresh the browser to reflect the changes')
         });
      </script>
   </body>

</html>

Output

Let us carry out the following steps to see how the above given code works −

  • Save the above given HTML code as forms_storage_javascript.html file in your server root folder.

  • Open this HTML file as http://localhost/forms_storage_javascript.html and the output is displayed as shown below.

  • When you enter the details in the form and click on the ‘Get data’ button, all your field values will be converted to JSON format and is displayed to you.

  • When the ‘Save data’ button is clicked, the forms data is saved in local storage.

  • When the ‘Delete data’ button is clicked, all the forms data gets deleted.

framework7_forms.htm
Advertisements