Framework7 - การเติมข้อความอัตโนมัติ

คำอธิบาย

การเติมข้อความอัตโนมัติเป็นส่วนประกอบที่เหมาะกับอุปกรณ์เคลื่อนที่และระบบสัมผัสของ Framework7 ซึ่งอาจเป็นแบบเลื่อนลงหรือแบบสแตนด์อโลน คุณสามารถสร้างและเริ่มต้นอินสแตนซ์เติมข้อความอัตโนมัติโดยใช้วิธี JavaScript -

myApp.autocomplete(parameters)

โดยที่พารามิเตอร์เป็นออบเจ็กต์ที่จำเป็นซึ่งใช้ในการเริ่มต้นอินสแตนซ์การเติมข้อความอัตโนมัติ

พารามิเตอร์การเติมข้อความอัตโนมัติ

ตารางต่อไปนี้แสดงรายการพารามิเตอร์การเติมข้อความอัตโนมัติที่มีอยู่ใน Framework7 -

ส. เลขที่ พารามิเตอร์และคำอธิบาย ประเภท ค่าเริ่มต้น
1

openIn

กำหนดวิธีการเปิดการเติมข้อความอัตโนมัติซึ่งสามารถใช้เป็นรายการแบบเลื่อนลงป๊อปอัปหรือเพจได้

สตริง หน้า
2

source

ใช้อินสแตนซ์การเติมข้อความอัตโนมัติข้อความค้นหาและฟังก์ชันการแสดงผลเพื่อส่งผ่านรายการที่ตรงกันด้วยอาร์เรย์

ฟังก์ชัน (เติมข้อความอัตโนมัติแบบสอบถามแสดงผล) -
3

valueProperty

ระบุค่ารายการของคีย์ของวัตถุรายการที่ตรงกัน

สตริง id
4

limit

จะแสดงรายการจำนวน จำกัด ในการเติมข้อความอัตโนมัติต่อการค้นหา

จำนวน -
5

preloader

ตัวโหลดล่วงหน้าสามารถใช้เพื่อระบุโครงร่างการเติมข้อความอัตโนมัติโดยตั้งค่าเป็นจริง

บูลีน เท็จ
6

preloaderColor

มันระบุสีของตัวโหลดล่วงหน้า โดยค่าเริ่มต้นสีจะเป็น "สีดำ"

สตริง -
7

value

กำหนดอาร์เรย์ด้วยค่าเริ่มต้นที่เลือก

อาร์เรย์ -
8

textProperty

ระบุค่ารายการของคีย์ของวัตถุรายการที่ตรงกันซึ่งสามารถใช้เป็นหัวเรื่องของตัวเลือกที่แสดง

สตริง ข้อความ

พารามิเตอร์การเติมข้อความอัตโนมัติแบบสแตนด์อโลน

ตารางต่อไปนี้แสดงรายการพารามิเตอร์การเติมข้อความอัตโนมัติแบบสแตนด์อโลนที่มีอยู่ใน Framework7 -

ส. เลขที่ พารามิเตอร์และคำอธิบาย ประเภท ค่าเริ่มต้น
1

opener

เป็นพารามิเตอร์องค์ประกอบสตริงหรือ HTML ซึ่งจะเปิดหน้าเติมข้อความอัตโนมัติแบบสแตนด์อโลน

สตริงหรือ HTMLElement -
2

popupCloseText

ใช้เพื่อปิดป๊อปอัปการเติมข้อความอัตโนมัติ

สตริง 'ปิด'
3

backText

มีลิงค์ย้อนกลับเมื่อเปิดการเติมข้อความอัตโนมัติเป็นหน้า

สตริง 'กลับ'
4

pageTitle

ระบุชื่อหน้าการเติมข้อความอัตโนมัติ

สตริง -
5

searchbarPlaceholderText

ระบุข้อความตัวยึดแถบค้นหา

สตริง 'ค้นหา'
6

searchbarCancelText

เป็นการกำหนดข้อความปุ่มยกเลิกแถบค้นหา

สตริง 'ยกเลิก'
7

notFoundText

จะแสดงข้อความเมื่อไม่พบองค์ประกอบที่ตรงกัน

สตริง 'ไม่พบ'
8

multiple

อนุญาตให้เลือกหลายรายการโดยตั้งค่าเป็นจริง

บูลีน เท็จ
9

navbarTheme

ระบุธีมสีสำหรับ navbar

สตริง -
10

backOnSelect

เมื่อผู้ใช้เลือกค่าการเติมข้อความอัตโนมัติจะถูกปิดโดยตั้งค่าเป็นจริง

บูลีน เท็จ
11

formTheme

ระบุธีมสีสำหรับแบบฟอร์ม

สตริง -

พารามิเตอร์การเติมข้อความอัตโนมัติแบบเลื่อนลง

ตารางต่อไปนี้แสดงรายการพารามิเตอร์การเติมข้อความอัตโนมัติแบบหล่นลงที่มีอยู่ใน Framework7 -

ส. เลขที่ พารามิเตอร์และคำอธิบาย ประเภท ค่าเริ่มต้น
1

input

เป็นองค์ประกอบสตริงหรือ HTML ที่ใช้สำหรับการป้อนข้อความ

สตริงหรือ HTMLElement -
2

dropdownPlaceholderText

ระบุข้อความตัวยึดแบบเลื่อนลง

สตริง -
3

updateInputValueOnSelect

คุณสามารถอัปเดตค่าอินพุตเมื่อเลือกโดยตั้งค่าเป็นจริง

บูลีน จริง
4

expandInput

คุณสามารถขยายการป้อนข้อความในมุมมองรายการเพื่อทำให้เต็มหน้าจอกว้างในระหว่างการแสดงแบบเลื่อนลงโดยการตั้งค่ารายการที่ป้อนให้เป็นจริง

บูลีน เท็จ

ฟังก์ชันการโทรกลับของการเติมข้อความอัตโนมัติ

ตารางด้านล่างแสดงรายการพารามิเตอร์การเติมข้อความอัตโนมัติแบบหล่นลงที่มีอยู่ใน Framework7 -

ส. เลขที่ พารามิเตอร์และคำอธิบาย ประเภท ค่าเริ่มต้น
1

onChange

เมื่อใดก็ตามที่มีการเปลี่ยนแปลงค่าการเติมข้อความอัตโนมัติฟังก์ชันเรียกกลับนี้จะทำงาน

ฟังก์ชัน (เติมข้อความอัตโนมัติค่า) -
2

onOpen

เมื่อใดก็ตามที่เปิดการเติมข้อความอัตโนมัติฟังก์ชันเรียกกลับนี้จะทำงาน

ฟังก์ชัน (เติมข้อความอัตโนมัติ) -
3

onClose

เมื่อใดก็ตามที่ปิดการเติมข้อความอัตโนมัติฟังก์ชันเรียกกลับนี้จะทำงาน

ฟังก์ชัน (เติมข้อความอัตโนมัติ) -

เทมเพลตการเติมข้อความอัตโนมัติ

ตารางต่อไปนี้แสดงรายการพารามิเตอร์การเติมข้อความอัตโนมัติแบบหล่นลงที่มีอยู่ใน Framework7 -

ส. เลขที่ พารามิเตอร์และคำอธิบาย ประเภท ค่าเริ่มต้น
1

navbarTemplate

เป็นเทมเพลต navbar เติมข้อความอัตโนมัติแบบสแตนด์อโลน

สตริง -
2

itemTemplate

เป็นไอเท็มฟอร์ม template7 แบบสแตนด์อโลน

สตริง -
3

dropdownTemplate

เป็นเทมเพลตแบบเลื่อนลง template7

สตริง -
4

dropdownItemTemplate

เป็นรายการแบบเลื่อนลง template7

สตริง -
5

dropdownPlaceholderTemplate

เป็นรายการตัวยึดแบบเลื่อนลง template7

สตริง -

เทมเพลตเริ่มต้น

ต่อไปนี้เป็นข้อมูลโค้ดเทมเพลตเริ่มต้นสำหรับพารามิเตอร์เทมเพลตที่กำหนดไว้ด้านบน -

navbarTemplate

<div class = "navbar {{#if navbarTheme}}theme-{{navbarTheme}}{{/if}}">
   <div class = "navbar-inner">
      <div class = "left sliding">
         {{#if material}}
            <a href = "#" class = "link {{#if inPopup}}close-popup{{else}}back{{/if}} icon-only">
               <i class = "icon icon-back"></i>
            </a>
         {{else}}
            <a href = "#" class = "link {{#if inPopup}}close-popup{{else}}back{{/if}}">
               <i class = "icon icon-back"></i>
               {{#if inPopup}}
                  <span>{{popupCloseText}}</span>
               {{else}}
                  <span>{{backText}}</span>
               {{/if}}
            </a>
         {{/if}}
      </div>

      <div class = "center sliding">{{pageTitle}}</div>
      {{#if preloader}}
         <div class = "right">
            <div class = "autocomplete-preloader preloader 
               {{#if preloaderColor}}
                  preloader-{{preloaderColor}}
               {{/if}}">
            </div>
         </div>
      {{/if}}
   </div>
</div>

itemTemplate

<li>
   <label class = "label-{{inputType}} item-content">
      <input type = "{{inputType}}" name = "{{inputName}}" value = "{{value}}" {{#if selected}}checked{{/if}}>
      {{#if material}}
         <div class = "item-media">
            <i class = "icon icon-form-{{inputType}}"></i>
         </div>
            
         <div class = "item-inner">
            <div class = "item-title">{{text}}</div>
         </div>
      {{else}}
         {{#if checkbox}}
            <div class = "item-media">
               <i class = "icon icon-form-checkbox"></i>
            </div>
         {{/if}}
            
         <div class = "item-inner">
            <div class = "item-title">{{text}}</div>
         </div>
      {{/if}}
   </label>
</li>

dropdownTemplate

<div class = "autocomplete-dropdown">
   <div class = "autocomplete-dropdown-inner">
      <div class = "list-block">
         <ul></ul>
      </div>
   </div>
   
   {{#if preloader}}
      <div class = "autocomplete-preloader preloader 
         {{#if preloaderColor}}
            preloader-{{preloaderColor}}
         {{/if}}">
         {{#if material}}
            {{materialPreloaderHtml}}
         {{/if}}
      </div>
   {{/if}}
</div>

dropdownItemTemplate

<li>
   <label class = "{{#unless placeholder}}label-radio{{/unless}} item-content" data-value = "{{value}}">
      <div class = "item-inner">
         <div class = "item-title">{{text}}</div>
      </div>
   </label>
</li>

dropdownPlaceholderTemplate

<li class = "autocomplete-dropdown-placeholder">
   <div class = "item-content">
      <div class = "item-inner">
         <div class = "item-title">{{text}}</div>
      </div>
   </label>
</li>

วิธีการเติมข้อความอัตโนมัติ

ตารางต่อไปนี้ระบุวิธีการเติมข้อความอัตโนมัติที่มีอยู่ใน Framework7 -

ส. เลขที่ วิธีการและคำอธิบาย
1

myAutocomplete.params

กำหนดพารามิเตอร์การเริ่มต้นที่ส่งผ่านไปกับอ็อบเจ็กต์

2

myAutocomplete.value

เป็นการกำหนดอาร์เรย์ด้วยค่าที่เลือก

3

myAutocomplete.opened

จะเปิดการเติมข้อความอัตโนมัติหากตั้งค่าเป็นจริง

4

myAutocomplete.dropdown

ระบุอินสแตนซ์ของรายการแบบเลื่อนลงการเติมข้อความอัตโนมัติ

5

myAutocomplete.popup

ระบุอินสแตนซ์ของป๊อปอัปการเติมข้อความอัตโนมัติ

6

myAutocomplete.page

ระบุอินสแตนซ์ของหน้าเติมข้อความอัตโนมัติ

7

myAutocomplete.pageData

เป็นการกำหนดข้อมูลหน้าการเติมข้อความอัตโนมัติ

8

myAutocomplete.searchbar

เป็นการกำหนดอินสแตนซ์ของแถบค้นหาที่เติมข้อความอัตโนมัติ

คุณสมบัติการเติมข้อความอัตโนมัติ

ตารางต่อไปนี้ระบุวิธีการเติมข้อความอัตโนมัติที่มีอยู่ใน Framework7 -

ส. เลขที่ คุณสมบัติและคำอธิบาย
1

myAutocomplete.open()

จะเปิดการเติมข้อความอัตโนมัติซึ่งสามารถใช้เป็นรายการแบบเลื่อนลงป๊อปอัปหรือเพจ

2

myAutocomplete.close()

จะปิดการเติมข้อความอัตโนมัติ

3

myAutocomplete.showPreloader()

มันแสดงตัวโหลดล่วงหน้าของการเติมข้อความอัตโนมัติ

4

myAutocomplete.hidePreloader()

มันซ่อนตัวโหลดล่วงหน้าของการเติมข้อความอัตโนมัติ

5

myAutocomplete.destroy()

มันทำลายอินสแตนซ์ตัวโหลดล่วงหน้าอัตโนมัติและลบเหตุการณ์ทั้งหมด

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้พารามิเตอร์เติมข้อความอัตโนมัติที่ซ่อนอยู่ใน 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>Autocomplete</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">Autcomplete</div>
                        <div class = "right"> </div>
                     </div>
                  </div>
               
                  <div class = "page-content">
                     <div class = "content-block-title">Simple Dropdown Autocomplete</div>
                     <div class = "list-block">
                        <ul>
                           <li class = "item-content">
                              <div class = "item-title label">Country</div>
                              <div class = "item-input">
                                 <input type = "text" placeholder = "Country" id = "autocomplete-dropdown">
                              </div>
                           </li>
                        </ul>
                     </div>
                  
                     <div class = "content-block-title">Dropdown With Input Expand</div>
                     <div class = "list-block">
                        <ul>
                           <li class = "item-content">
                              <div class = "item-title label">Country</div>
                              <div class = "item-input">
                                 <input type = "text" placeholder = "Country" id = "autocomplete-dropdown-expand">
                              </div>
                           </li>
                        </ul>
                     </div>
                  
                     <div class = "content-block-title">Dropdown With All Values</div>
                     <div class = "list-block">
                        <ul>
                           <li class = "item-content">
                              <div class = "item-title label">Country</div>
                              <div class = "item-input">
                                 <input type = "text" placeholder = "Country" id = "autocomplete-dropdown-all">
                              </div>
                           </li>
                        </ul>
                     </div>
                  
                     <div class = "content-block-title">Dropdown With Placeholder</div>
                     <div class = "list-block">
                        <ul>
                           <li class = "item-content">
                              <div class = "item-title label">Country</div>
                              <div class = "item-input">
                                 <input type = "text" placeholder = "Country" id = "autocomplete-dropdown-placeholder">
                              </div>
                           </li>
                        </ul>
                     </div>
                  
                     <div class = "content-block-title">Simple Standalone Autocomplete</div>
                     <div class = "list-block">
                        <ul>
                           <li>
                              <a href = "#" id = "autocomplete-standalone" class = "item-link item-content autocomplete-opener">
                                 <input type = "hidden">
                                 <div class = "item-inner">
                                    <div class = "item-title">Favorite Country</div>
                                    <div class = "item-after"></div>
                                 </div>
                              </a>
                           </li>
                        </ul>
                     </div>
                  
                     <div class = "content-block-title">Popup Standalone Autocomplete</div>
                     <div class = "list-block">
                        <ul>
                           <li>
                              <a href = "#" id = "autocomplete-standalone-popup" class = "item-link item-content autocomplete-opener">
                                 <input type = "hidden">
                                 <div class = "item-inner">
                                    <div class = "item-title">Favorite Country</div>
                                    <div class = "item-after"></div>
                                 </div>
                              </a>
                           </li>
                        </ul>
                     </div>
                  
                     <div class = "content-block-title">Multiple Values Standalone Autocomplete</div>
                     <div class = "list-block">
                        <ul>
                           <li>
                              <a href = "#" id = "autocomplete-standalone-multiple" class = "item-link item-content autocomplete-opener">
                                 <input type = "hidden">
                                 <div class = "item-inner">
                                    <div class = "item-title">Favorite Countries</div>
                                    <div class = "item-after"></div>
                                 </div>
                              </a>
                           </li>
                        </ul>
                     </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;
         var mainView  =  myApp.addView('.view-main');
         
         // Countries data array
         var countries  =  ('India Africa Australia NewZealand England WestIndies Scotland Zimbabwe Srilanka Bangladesh').split(' ');

         // Simple Dropdown
         var autocompleteDropdownSimple  =  myApp.autocomplete ({
            input: '#autocomplete-dropdown',
            openIn: 'dropdown',
            
            source: function (autocomplete, query, render) {
               var results  =  [];
               if (query.length === 0) {
                  render(results);
                  return;
               }
               
               // You can find matched items
               for (var i = 0; i < countries.length; i++) {
                  if (countries[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) 
                     results.push(countries[i]);
               }
               // Display the items by passing array with result items
               render(results);
            }
         });

         // Dropdown with input expand
         var autocompleteDropdownExpand = myApp.autocomplete ({
            input: '#autocomplete-dropdown-expand',
            openIn: 'dropdown',
            expandInput: true,   // expandInput used as item-input in List View will be expanded to full screen wide
                                 //during dropdown
            source: function (autocomplete, query, render) {
               var results = [];
               if (query.length === 0) {
                  render(results);
                  return;
               }
               // Find matched items
               for (var i = 0; i < countries.length; i++) {
                  if (countries[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) results.push(countries[i]);
               }
               // Display the items by passing array with result items
               render(results);
            }
         });

         // Dropdown with all values
         var autocompleteDropdownAll = myApp.autocomplete ({
            input: '#autocomplete-dropdown-all',
            openIn: 'dropdown',
            
            source: function (autocomplete, query, render) {
               var results = [];
               
               // You can find matched items
               for (var i = 0; i < countries.length; i++) {
                  if (countries[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) 
                     results.push(countries[i]);
               }
               // Display the items by passing array with result items
               render(results);
            }
         });

         // Dropdown with placeholder
         var autocompleteDropdownPlaceholder = myApp.autocomplete ({
            input: '#autocomplete-dropdown-placeholder',
            openIn: 'dropdown',
            dropdownPlaceholderText: 'Type as "India"',
            source: function (autocomplete, query, render) {
               var results = [];
               if (query.length === 0) {
                  render(results);
                  return;
               }
               
               // You can find matched items
               for (var i = 0; i < countries.length; i++) {
                  if (countries[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) 
                     results.push(countries[i]);
               }
                  
               // Display the items by passing array with result items
               render(results);
            }
         });

         // Simple Standalone
         var autocompleteStandaloneSimple = myApp.autocomplete ({
            openIn: 'page', //open in page
            opener: $$('#autocomplete-standalone'), //link that opens autocomplete
            backOnSelect: true, //go back after we select something
            
            source: function (autocomplete, query, render) {
               var results = [];
               if (query.length === 0) {
                  render(results);
                  return;
               }
               
               // You can find matched items
               for (var i = 0; i < countries.length; i++) {
                  if (countries[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) 
                     results.push(countries[i]);
               }
               // Display the items by passing array with result items
               render(results);
            },
               
            onChange: function (autocomplete, value) {
               // Here add the item text value to item-after
               $$('#autocomplete-standalone').find('.item-after').text(value[0]);
               
               // You can add item value to input value
               $$('#autocomplete-standalone').find('input').val(value[0]);
            }
         });

         // Standalone Popup
         var autocompleteStandalonePopup = myApp.autocomplete ({
            openIn: 'popup', // Opens the Autocomplete in page
            opener: $$('#autocomplete-standalone-popup'), // It will open standalone autocomplete popup
            backOnSelect: true, //After selecting item, then go back to page
            source: function (autocomplete, query, render) {
               var results = [];
               if (query.length === 0) {
                  render(results);
                  return;
               }
            
               // You can find matched items
               for (var i = 0; i < countries.length; i++) {
                  if (countries[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) results.push(countries[i]);
               }
            
               // Display the items by passing array with result items
               render(results);
            },
            
            onChange: function (autocomplete, value) {
               // Here add the item text value to item-after
               $$('#autocomplete-standalone-popup').find('.item-after').text(value[0]);
               
               // You can add item value to input value
               $$('#autocomplete-standalone-popup').find('input').val(value[0]);
            }
         });

         // Multiple Standalone
         var autocompleteStandaloneMultiple = myApp.autocomplete ({
            openIn: 'page', //Opens the Autocomplete in page
            opener: $$('#autocomplete-standalone-multiple'), //link that opens autocomplete
            multiple: true, //Allow multiple values
            source: function (autocomplete, query, render) {
               var results = [];
               if (query.length === 0) {
                  render(results);
                  return;
               }
               
               // You can find matched items
               for (var i = 0; i < countries.length; i++) {
                  if (countries[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) results.push(countries[i]);
               }
               
               // Display the items by passing array with result items
               render(results);
            },
            
            onChange: function (autocomplete, value) {
               // Here add the item text value to item-after
               $$('#autocomplete-standalone-multiple').find('.item-after').text(value.join(', '));
               
               // You can add item value to input value
               $$('#autocomplete-standalone-multiple').find('input').val(value.join(', '));
            }
         });
      </script>
   </body>

</html>

เอาต์พุต

ให้เราทำตามขั้นตอนต่อไปนี้เพื่อดูว่าโค้ดข้างต้นทำงานอย่างไร -

  • บันทึกโค้ด HTML ที่ระบุข้างต้นเป็น autocomplete.html ไฟล์ในโฟลเดอร์รูทเซิร์ฟเวอร์ของคุณ

  • เปิดไฟล์ HTML นี้เป็น http: //localhost/autocomplete.html และผลลัพธ์จะแสดงดังที่แสดงด้านล่าง

  • ตัวอย่างนี้ให้การเติมข้อความอัตโนมัติของค่าในเมนูแบบเลื่อนลงแบบง่ายรายการแบบเลื่อนลงพร้อมค่าทั้งหมดดรอปดาวน์พร้อมตัวยึดการเติมข้อความอัตโนมัติแบบสแตนด์อโลนเป็นต้น