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 และผลลัพธ์จะแสดงดังที่แสดงด้านล่าง
ตัวอย่างนี้ให้การเติมข้อความอัตโนมัติของค่าในเมนูแบบเลื่อนลงแบบง่ายรายการแบบเลื่อนลงพร้อมค่าทั้งหมดดรอปดาวน์พร้อมตัวยึดการเติมข้อความอัตโนมัติแบบสแตนด์อโลนเป็นต้น