Недавно я столкнулся с проблемой JS в IE8. Мне нужно реализовать (IE8) для использования пининина или первых букв для извлечения контента в избранном. Оригинальный ComboBox мог только поддерживать ввод и поиск китайского символа, и теперь мне нужно улучшить его. Теперь я запишу пошаговый метод реализации. Функция проста, и могут быть ошибки и недостатки для ссылки на обучение. (Эта статья предоставляет только обучение и резервное копирование идеи. В реальной ситуации ее необходимо использовать в режиме совместимости IE8 или IE, поэтому другие браузеры не учитываются)
Структура каталога:
тест
| --js
|-index.html
Добавить на страницу индекса
index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript" src="js/autoComplete.js" ></script> <script type="text/javascript"> </script> </head> <body> <input type="text" id="txtDisplay" /> <select id = "city"> <vition value = "1"> beijing </option> <vitue value = "2"> shanghai </option> <option value = "3"> guangzhou </option> <vitue value = "4"> shenzhen </option> <опция = "5"> chongquing </antuare> <опция = vatue = "6"> tian value = "7"> shenyang </option> <option value = "8"> nanjing </option> <valie = "9"> wuhan </option> <option value = "10"> Changchun </option> <опция Value = "11"> chengdu </option> <опция value = "12"> dali value = "14"> Qingdao </option> <option value = "15"> ajinan </option> <value = "16"> xiamen </option> <option value = "17"> fuzhou </option >> <опция value = "18"> xi'an </option> <опция value = "19"> changsha </option> <plaint = "20" 20 ". </html>
Эффект: Начните скрывать раскрывающийся список из Select. Нажимая текстовое поле ввода, отобразите его в нижней части окна ввода. После того, как выбор будет завершен, скрыть выбор.
Реализация JS:
Если на странице есть несколько мест для реализации таких функций, вам необходимо использовать объектно-ориентированное мышление и как можно больше использовать код. Нам нужно настроить коллекцию, как AP.
AutoCOMPLETE.JS
function map () { / ** массив для хранения клавиш (используется для обезвреживания)* / this.keys = new Array (); / ** сохранить данные*/ this.data = new Object (); / ** * Поместите пару клавиш-значения * @param {string} key * @param {object} value */ this.put = function (key, value) {if (this.data [key] == null) {this.keys.push (key); } this.data [key] = value; }; / ** * Получить значение, соответствующее клавишу * @param {string} key * @return {object} value */ this.get = function (key) {return this.data [key]; }; / *** Удалить пару клавиш-значений* @param {string} key*/ this.remove = function (key) {this.keys.remove (key); this.data [key] = null; }; / ** * Перенос карты и выполнение функции обработки * * @param {function} функция обратного вызова (ключ, значение, index) {..} */ this.each = function (fn) {if (typeof fn! = 'Function') {return; } var len = this.keys.length; for (var i = 0; i <len; i ++) {var k = this.keys [i]; fn (k, this.data [k], i); }}; / *** Получить массив клавиш-значения (аналогично java's entrySet ())* @return массив объекта клавиш value {key, value}*/ this.entrys = function () {var len = this.keys.length; var intrys = new Array (Len); for (var i = 0; i <len; i ++) {intrents [i] = {key: this.keys [i], value: this.data [i]}; } return ntrys; }; / *** Определите, является ли карта пустой*/ this.isempty = function () {return this.keys.length == 0; }; / *** Получите количество пар клавишных значений*/ this.size = function () {return this.keys.length; }; / ** * Переписать toString */ this.toString = function () {var s = "{"; for (var i = 0; i <this.keys.length; i ++, s+= ',') {var k = this.keys [i]; s+= k+"="+this.data [k]; } s+= "}"; возврат S; }; } Array.prototype.remove = function (s) {for (var i = 0; i <this.length; i ++) {if (s == this [i]) this.splice (i, 1); }}Теперь нам нужно написать файл ввода загрузки программы, который используется для передачи ввода и выбора объектов, а затем выполнить серию операций, таких как привязка событий.
var AutoCOMpleteMap = new Map (); // контейнер компонентов, который удобен для вызова при управлении компонентом события, и поддерживает многокомпонентное управление var splitfleg = "_"; // seperator/*** Текстовое поле, раскрывающееся окно объединяется в компонент автоматического завершения* @param {object} txtobj текстовое поле Object* @param {object} selectObj раскрывающееся окно* @param {int} selectsize Отображение номера выпадающих коробок* @param {int} selectlengh selectLength) {this.CacheContainer = new Array (); // Кэш -контейнер, используемый для кэширования содержимого в опции для CacheContainer при загрузке страницы. This.init = function () {this.initcache (); // Данные кэша, кэшируйте данные опции для CacheContainer this.initcss (); // Инициализировать CSS и скрыть выберите это. Регистравервент (); // Зарегистрировать событие this.setSelectIdposition (); // Установите местоположение компонента CACE CACE CACHE, чтобы облегчить вызов при управлении компонентом. В то же время он поддерживает многокомпонентное управление AutoCompletemap.put (txtobj.id + selectObj.id, это); // После обновления интерфейса напишите текстовое значение раскрывающегося поля прямого агентства в текстовое поле var selectIndex = selectObj.selectedIndex; if (selectIndex> 0) // Обычно первое содержимое [выберите]. Если нет, измените> 0 на> = 0 txtobj.value = selectObj.options [selectIndex] .Text; } // Данные данные к кэшу и ваш в CacheContainer this.initcache = function () {var select_options = selectobj.options; if (select_options == null || select_options.length == 0) {return; } this.cachecontainer = []; for (var i = 0; i <select_options.length; i ++) {this.cachecontainer [i] = select_options [i] .text + splitfleg + select_options [i] .value; }} this.initcs = function () {selectObj.style.display = "none"; selectObj.style.position = "Absolute"; selectObj.style.zindex = 2; selectObj.style.width = selectLength + "px"; selectObj.multiple = "несколько"; txtobj.style.width = selectlength - 5 + "px"; } this.RegisterEvent = function () {// Событие раскрывающегося полета SelectObj.ondblclick = this.doubleclickeVent; selectObj.onkeyup = this.keyupevent; selectObj.onblur = this.onblureVent; selectObj.onfocus = this.onfocusevent; // Событие текстового окна txtobj.onfocus = this.onfocusevent; txtobj.onblur = this.onblurevent; txtobj.onkeyup = this.txtobjkeyupevent; } this.SetSelectIdposition = function () {var position = this.findposition (txtobj); selectObj.style.left = position [0] + "px"; selectObj.style.top = position [3] + 3 + "px"; } this.findposition = function (oelement) {var x2 = 0; var y2 = 0; var width = oelement.offsetwidth; var height = oelement.offsetheight; if (typeof (oelement.offsetparent)! = 'undefined') {for (var posx = 0, posy = 0; oelement; oelement = oelement.offsetparent) {posx += oelement.offsetleft; posy += oelement.offsettop; } x2 = posx + width; y2 = posy + высота; вернуть [Posx, posy, x2, y2]; } else {x2 = oelement.x + width; y2 = oelement.y + высота; return [oelement.x, oelement.y, x2, y2]; }} // --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- = AutoCOMPLETEMAP.GET (TXTOBJ.ID + SELECTOBJ.ID); if (event.keycode == 13) {event.returnValue = false; var srcelem = document.activeElement; // Получить в настоящее время сфокусированный объект var testval = srcelem.id; if (testval == selectObj.id) {autoCOMPLETE.DoubleClickeVent (); }}} / *** Focus event* / this.onblurevent = function () {var srcelem = document.activeElement; var testval = srcelem.id; if (testval! = selectobj.id && testval! = txtobj.id) {// Если текущее поле ввода или список выбора не сфокусированы, selectObj.style.display = "none"; // скрыть список SELECT}}/*** FOCUS Event*/this.onfocusevent = function () {var AutoCOMPLETE = AutoCOMPLETEMAP.GET (TXTOBJ.ID + SELECTOBJ.ID); AutoCOMPLETE.SETELECTIDPOSION (); var srcelem = document.activeElement; var testval = srcelem.id; if (testval == selectobj.id || testval == txtobj.id) {// фокус на текущем объекте if (txtobj.value.length! = 0) {// Когда в поле ввода есть символы, операция не выполняется; } var selectIdlength = selectObj.options.length; if (selectIdlength> selectSize) {selectObj.size = selectSize; } else {selectObj.size = selectIdlength; } selectObj.style.display = "block"; }} var mytimeout = null; / ** * Текстовое поле Mouse фокусируется на событии выпуска, установите таймер, выполните функцию в каждом конкретном времени, запросите данные о выборе списка, сопоставленные в поле ввода и Display */ this.txtobjkeyupevent = function () {var autocomplete = autocompletemap.get (txtobj.id + selectobj.id); if (event.keycode == 40) {// Щелкните клавишу со стрелками клавиатуры в поле ввода, и в настоящее время нет необходимости искать. Событие поиска запускается при вводе var srcelem = document.activeElement; var testval = srcelem.id; if (testval == txtobj.id) {selectObj.focus (); if (selectObj.options.length> = 1) selectObj.options [0]. Selected = true; } возвращаться; } if (autoComplete.mytimeout! = null) {// Очистить установленное событие выполнения SET CLEARTIMEOUT (AutoCOMPLETE.MYTIMEOUT); } autoComplete.mytimeout = setTimeout (autoComplete.doajax, 200); } // ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. function () {var AutoCOMPLETE = AutoCOMPLETEMAP.GET (TXTOBJ.ID + SELECTOBJ.ID); // Очистить исходные параметры AutoComplete.clearalloptions (); AutoCOMPLETE.SETELECTIDPOSION (); var inputstr = txtobj.value; var Arrays = AutoComplete.comPareInput (inputstr); // Сопоставление данных, которые соответствуют условиям запроса if (arrays == null || arrays.length == 0) {selectObj.style.display = "none"; возвращаться; } selectObj.style.display = "block"; for (var i = 0; i <arrays.length; i ++) {var optionparams = массивы [i] .split (splitfleg); var opt = new Option (); Opt.Text = OptionParams [0]; opt.value = optionParams [1]; selectObj.add (opt); } if (arrays.length> selectsize) {selectObj.size = selectSize; } else {selectObj.size = arrays.length; }} / ** * Очистить исходные параметры * / this.clearalloptions = function () {// очистить исходные параметры var nl = selectobj.options.length; while (nl> 0) {selectObj.remove (selectObj.options.length - 1); nl = selectobj.options.length; }} // --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- this.compareinput = function (inputstr) {if (this.cachecontainer.length == 0) {return; } inputStr = inputStr.Replace (/(^[/s]*)/g, ""); // Удалить пустую строку в переднем inputstr = this.deletespecialspace (inputstr); // Удалить специальную пустую строку if (inputstr == null || inputstr.length == 0) {return this.cachecontainer; } inputStr = disablePecialCharacter (inputStr); // Специальная обработка символов var resultArray = new Array (); var k = 0; var selectText = ""; for (var i = 0; i <this.cachecontainer.length; i ++) {selectText = (this.cachecontainer [i] .split (splitfleg) [0]). Заменить (/(^[/s]*)/g, "); selectText = this.DeletPecialSpace (selectText); if (сравнение (inputstr, selectText)) {// Совместить правило ResultArray [k] = this.cachecontainer [i]; K ++; }} return uniquearray (resultArray); } / *** Удалить специальную пустую строку* / this.deletespecialspace = function (srcstr) {var temp = ""; for (var i = 0; i <srcstr.length; i ++) {var charstr = srcstr.charat (i); // Специальное пространство на интерфейсе Unicode = 160, это пространство не является ни полной шириной, ни полугодной if (charstr.charcodeat (0) == 160) {продолжение; } temp += charstr; } return Temp; }}/*** @param {string} символы inputstr, которые необходимо отфильтровать* Специальная обработка символов*/function disablepecialCharacter (inputstr) {inputstr = inputStr.replace (new Regexp ("////", 'g'), "/////"); inputstr = inputstr.replace (new Regexp ("//.", 'g'), "//"); inputstr = inputstr.replace (new Regexp ("//^", 'g'), "//^"); inputstr = inputstr.replace (new Regexp ("// {", 'g'), "// {"); inputstr = inputstr.replace (new Regexp ("// [", 'g'), "// ["); inputstr = inputstr.replace (new regexp ("// (", 'g'), "// ("); inputstr = inputstr.replace (new Regexp ("// |", 'g'), "// |"); inputstr = inputStr.replace (new Regexp ("//]", 'g'), "//]"); Regexp ("//]", 'g'), "//]"); inputstr = inputstr.replace (new Regexp ("//*", 'g'), "//*"); inputstr = inputstr.replace (new Regexp ("//+", 'g'), "//+"); inputstr = inputstr.replace (new Regexp ("//?", 'g'), "//?"); вернуть inputstr; } /*** Сопоставление правил* @param {string} символ ввода ввода, сопоставьте условие* @param {string} selecttext сочетается с текстом* /функции сравнения (Inputstr, selectText) {// Сопоставление китайских символов return SelectText.Indexof (inputstr)! = -1; } / *** Фильтр дубликат данных* @param {object} arr } return arr.reverse (). join (","). Match (/(^,,,+)(? !.*/ 1)/ig) .reverse (); } / *** Добавить пользовательскую функцию для выполнения в оригинал Onload* @param {Object} Функция загрузки func* / function addLoadeVent (func) {var oldOnload = window.onload; if (typeof window.onload! = 'function') {window.onload = func; } else {window.onload = function () {oldonload (); func (); }}}}Представление инструмента JS для преобразования китайских иерог
pinyinhanzi.js
/ ** * Преобразование человека в инструмент Pinyin JS */ var key2code = {65: «a», 66: «B», 67: «C», 68: «D», 69: «E», 70: «F», 71: «G», 72: «H», 73: «I», 74: «J», 75: «K»: «77:», 77: «77:», 77: «77:»: « «N», 79: «O», 80: «P», 81: «Q», 82: «R», 83: «S», 84: «T», 85: «U», 86: «V», 87: «W», 88: «X», 89: «Y», 90: «Z», 49: «5»: «51:», 51: «51:», 51: «51:», 51: «51:», 51: «51:», 51: «51:« 51: », 51:« 51: »,« 51: »,« y », 90:« z »:« w ». "5", 54: "6", 55: "7", 56: "8", 57: "9", 48: "0"}; var spell = {0xb0a1: "a", 0xb0a3: "ai", 0xb0b0: "an", 0xb0b9: "ang", 0xb0bc: "ao", 0xb0c5: "ba", 0xb0d7: "bai", 0xb0df: "Ban", 0xee: ",", 0x.: ",", ",", 0x. «Bao», 0xb1ad: «bei», 0xb1bc: «ben», 0xb1c0: «beng», 0xb1c6: «bi», 0xb1de: «bian», 0xb1ea: «biao», 0xb1ee: «bie», 0xb1f2: «bin», 0xb1f8: «BINA»: «BINA»: «BINGA»: «BINA»: «BINA»: «BINA»: «BINGA»: «BINA»: 0xB1EE: «BIE». «Bo», 0xb2b8: «bu», 0xb2c1: «ca», 0xb2c2: «cai», 0xb2cd: «can», 0xb2d4: «cang», 0xb2d9: «cao», 0xb2de: «ce», 0xb2e3: «ceng», 0xb2e5: «CHA», 0xf2e5: «CHa», 0xf2e5: «CHa», 0xb2e3: «Ceng», 0xb2e5: «CE». "Chai", 0xb2f3: "Chan", 0xb2fd: "Chang", 0xb3ac: "chao", 0xb3b5: "Che", 0xb3bb: "Chen", 0xb3c5: "Cheng", 0xb3d4: "Chi", 0xb3e4: "CHOU", 0xb3e9: «chou», 0xb3e9: ". "Chu", 0xb4a7: "Chuai", 0xb4a8: "Chuan", 0xb4af: "Chuang", 0xb4b5: "Chui", 0xb4ba: "Chun", 0xb4c1: "Chuo", 0xb4c3: "ci", 0xb4cf: "cong", 0x ", 0x", ", 0x", 0x ", 0x", 0x ",", 0x ", 0x", 0x ", 0x". 0xb4d6: «cu», 0xb4da: «cuan», 0xb4dd: «cui», 0xb4e5: "cun", 0xb4e8: "cuo", 0xb4ee: "da", 0xb4f4: "dai", 0xb5a2: "dan", 0xb5b1: "dai". "DAO", 0xB5C2: "de", 0xb5c5: "deng", 0xb5cc: "di", 0xb5df: "dian", 0xb5ef: "diao", 0xb5f8: "Die", 0xb6a1: "Ding", 0xb6aa: "diu", 0xb6ab: "Dong", 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0xb6ab: "Dong". «Dou», 0xb6bc: «du», 0xb6cb: «duan», 0xb6d1: «dui», 0xb6d5: «dun», 0xb6de: «duo», 0xb6ea: «e», 0xb6f7: «en», 0xb6f8: «er», 0xb7a2: «Fa». 0xb7bb: «Fang», 0xb7c6: «fei», 0xb7d2: «fen», 0xb7e1: «feng», 0xb7f0: «fo», 0xb7f1: «fou», 0xb7f2: «fu», 0xb8c1: "ga, 0xb8c3:" gai ", 0x", 0x ". 0xb8d4: «Gang», 0xb8dd: «Gao», 0xb8e7: «ge», 0xb8f8: «gei», 0xb8f9: «Gen», 0xb8fb: «Gen», 0xb9a4: «Gong», 0xb9b3: «Gou», 0xb9bc: «Guong», «Guong», «Guong», «Guon»: «Guon»: «guon»: «guon»: «Guong», «guong», «guong», «guong», «guong», «guong», «Guong», 0xb9b3: «GOU», 0xb9bc: 0xb9d4: «guai», 0xb9d7: «guan», 0xb9e2: «guang», 0xb9e5: «gui», 0xb9f5: «Gun», 0xb9f8: «Guo», 0xb9fe: «ha», 0xbaa1: «Хай», 0xbaa8: «han», «HAR»: «Hang»: «Hang»: «Hang»: «Hang»: «Hange»: «Hange»: «Hange»: «Hange»: «Hange»: «Hange»: «HARSBB»: 0xbabe: «Hao», 0xbac7: «He», 0xbad9: «hei», 0xbadb: «Hen», 0xbadf: «heng», 0xbae4: «Hong», 0xbaed: «Hou», 0xbaf4: «Hu», 0xbba8: «Hua», 0xbb1: «Hu», 0xbb1: «Hua»: «Hua»: «Hu»: «Hu»: «Hu»: «Hu»: «Hu»: «Hu»: «Hu»: «Hu»: 0xbb. «Hua», 0xbbc4: «huang», 0xbbd2: «hui», 0xbbe7: «hun», 0xbbed: «huo», 0xbbf7: «ji», 0xbcce: «jia», 0xbcdf: «jian», 0xbda9: «jiang», 0xbdf: «jian», 0xbdf: «jian»: «jianb»: «jian»: «jianb»: «Jian»: «Jia»: «Jian»: «Jia»: «Jian»: «Jia»: «Jian»: «Jia»: «jian»: «Jia»: «JIAN»: «JIAN»: «JIAN»: «JIAN»: «JIAN»: «JIAN»: «JIAN». 0xBDD2: "jie", 0xBDED: "jin", 0xBEA3: "jing", 0xBEBC: "jiong", 0xBEBE: "jiu", 0xBECF: "ju", 0xBEE8: "juan", 0xBEEF: "jue", 0xBEF9: "jun", 0xBFA6: "ka", 0xBFAA: «Kai», 0xbfaf: «Kan», 0xbfb5: «kang», 0xbfbc: «kao», 0xbfc0: «ke», 0xbfcf: «ken», 0xbfcf: «ken», 0xbfd3: «keng», 0xbd5: "kong", 0xbd9: ", 0xbd9:", 0xbd9: ", 0xbd9:". 0xbfdd: «ku», 0xbfe4: «kua», 0xbfe9: «kuai», 0xbfed: "kuan", 0xbfef: "kuang", 0xbff7: "kui", 0xc0a4: "kun", 0xc0a8: "kuo", 0xc0ac4: ", 0x. "Lai", 0xc0b6: "LAN", 0xc0c5: "lang", 0xc0cc: "lao", 0xc0d5: "le", 0xc0d7: "lei", 0xc0e2: "leng", 0xc0e5: "li", 0xc1a9: "Lia", 0xc1aa: "liiana", 0xc1aa: "Liana", 0xc1aa: ". «Liang», 0xc1c3: «liao», 0xc1d0: «ложь», 0xc1d5: «lin», 0xc1e1: «ling», 0xc1ef: «liu», 0xc1fa: «long», 0xc2a5: "loue", 0xc2ab: "lu", 0xc2bf ", 0xc2b:" Lv ", 0xc2bf:". «Luan», 0xc2d3: «lue», 0xc2d5: «lun», 0xc2dc: «luo», 0xc2e8: «ma», 0xc2f1: «mai», 0xc2f7: «man», 0xc3a2: «meng», 0xc3a8: "Mao", 0xc3b4: "Me", 0x3b4: ". "MEI", 0xc3c5: "Men", 0xc3c8: "Meng", 0xc3d0: "mi", 0xc3de: "mian", 0xc3e7: "miao", 0xc3ef: "mie", 0xc3f1: "min", 0xc3f7: "ming", 0xc3f1: "ming", 0xc3f1: "Ming", 0xc3f1: "Ming", 0xc3f1: "MIN "Mo", 0xc4b1: "mou", 0xc4b4: "mu", 0xc4c3: "na", 0xc4ca: "nai", 0xc4cf: "nan", 0xc4d2: "nang", 0xc4d3: "nao", 0xc4d8: "ne", 0xc4d9: «Nao», 0xc4d8: ", 0xc4d9:". «Nen», 0xc4dc: «neng», 0xc4dd: «ni», 0xc4e8: «nian», 0xc4ef: «Niang», 0xc4f1: «niao», 0xc4f3: «nie», 0xc4fa: «nin», 0xc4f: «ning», 0xc4fa: «nin», 0xc4fb: «ning», 0x, 0x, 0x, 0x, 0x, 0xc4fa: «nin». 0xC5A7: "nong", 0xC5AB: "nu", 0xC5AE: "nv", 0xC5AF: "nuan", 0xC5B0: "nue", 0xC5B2: "nuo", 0xC5B6: "o", 0xC5B7: "ou", 0xC5BE: "pa", 0xC5C4: "pai", 0xc5ca: «pan», 0xc5d2: «pang», 0xc5d7: «pao», 0xc5de: «pei», 0xc5e7: «pen», 0xc5e9: «peng», 0xc5f7: «pi», 0xc6aa: «pian», 0xc6ae: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio»: «pio», 0xc6aa: «pian». 0xc6b4: «Pin», 0xc6b9: «Ping», 0xc6c2: «Po», 0xc6cb: «Pu», 0xc6da: «Qi», 0xc6fe: «Qia», 0xc7a3: «Qian», 0xc7b9: «qiang», 0xc7c1: "qiao",: "qiao". 0xC7D5: "qin", 0xC7E0: "qing", 0xC7ED: "qiong", 0xC7EF: "qiu", 0xC7F7: "qu", 0xC8A6: "quan", 0xC8B1: "que", 0xC8B9: "qun", 0xC8BB: "ran", 0xC8BF: "rang", 0xc8c4: «rao», 0xc8c7: «re», 0xc8c9: «ren», 0xc8d3: «reng», 0xc8d5: «ri», 0xc8d6: «rong», 0xc8e0: «rou», 0xc8e3: «ru», 0xc8ed: «ruan»: «ruan»: «ruan»: «ruan»: «ruan»: «ruan»: «ruan»: «ruan»: «rou»: «rou», 0xc8e3: «rong»: «rou», 0xc8e3: «rong»: «rou», 0xc8e3: «rong»: «rou», 0xc8e3: 0xC8F2: "run", 0xC8F4: "ruo", 0xC8F6: "sa", 0xC8F9: "sai", 0xC8FD: "san", 0xC9A3: "sang", 0xC9A6: "sao", 0xC9AA: "se", 0xC9AD: "sen", 0xC9AE: "seng", 0xc9af: "sha", 0xc9b8: "shai", 0xc9ba: "shan", 0xc9ca: "shang", 0xc9d2: "shao", 0xc9dd: "она", 0xc9e9: "shen", 0xc9f9: "Sheng", 0xca6: "shi", 0xcad5: "Shi", "shi", "shi". 0xcadf: «Shu», 0xcba2: «Shua», 0xcba4: «Shuai», 0xcba8: «Shuan», 0xcbaa: «Shuang», 0xcbad: «Shui», 0xcbb1: «Shun», 0xcb5: «Shuo», 0xcbc9: «Shun», 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x. «Sou», 0xcbd4: «su», 0xcbe1: «suan», 0xcbe4: «sui», 0xcbef: «Солнце», 0xcbf2: «suo», 0xcbfa: «ta», 0xcca5: «tai», 0xcae: «tan», 0xcc0: «Tangcc», «Tangcc»: «Tangcc». 0xccd8: «te», 0xccd9: «teng», 0xccdd: «ti», 0xccec: «tian», 0xccf4: «tiao», 0xccf9: «tie», 0xccfc: «ting», 0xcda8: «Тонг», 0xcdb5: "Toun 0xcdc4: 0xcdc6: "tui", 0xcdcc: "tun", 0xcdcf: "tuo", 0xcdda: "wa", 0xcde1: "wai", 0xcde3: "wan", 0xcdf4: "wang", 0xcdfe: "wei", 0xcec1: "wen", ", 0xcec1:", 0xcec1: ", 0xcec1:", 0xcec1: ". "Weng", 0xcece: "wo", 0xced7: "wu", 0xcef4: "xi", 0xcfb9: "xia", 0xcfc6: "xian", 0xcfe0: "xiang", 0xcff4: "xiang", 0xcf4: "xiao", 0xd0a8: "xd0b8:" xd0a ":" xiao ":" Xiao ":" Xiao ":" Xiao ":" xiao ":" Xiang ", 0xcf4:" xiao ", 0x. "xin", 0xd0c7: "xing", 0xd0d6: "xiong", 0xd0dd: "xiu", 0xd0e6: "xu", 0xd0f9: "xuan", 0xd1a5: "xue", 0xd1ab: "xun", 0xd1b9: "ya", 0x ", 0x", 0x ", 0x", 0x ", 0x", 0x ", 0x", 0x "," yan ", 0x. 0xd1ea: «yang», 0xd1fb: «yao», 0xd2ac: «ye», 0xd2bb: «yi», 0xd2f0: «Инь», 0xd3a2: «ying», 0xd3b4: «yo», 0xd3b5: «yong», 0xd3c4: "yo", 0x ", 0x", 0x: ", 0x", 0x ", 0x", 0x ", 0xd3b5:", 0xd3c4: "yo", 0xd3b5: "ying". 0xd4a7: «yuan», 0xd4bb: «yue», 0xd4c5: «yun», 0xd4d1: «za», 0xd4d4: «zai», 0xd4db: «zan», 0xd4df: «zang», 0xd4e2: «zao», 0xd4f0: «zao»: «zao»: «zao»: «zao»: «zao»: «zao»: «zao»: «zao»: «zao»: «zao»: «zao»: «zao»: «zao»: 0xd4f0: «zang»: «Zang», 0xd4e2: " «Zei», 0xd4f5: «zen», 0xd4f6: «zeng», 0xd4fa: «zha», 0xd5aa: «Zhai», 0xd5b0: «Zhan», 0xd5c1: "Zhang", 0xd5d0: "Zhao", 0xd5da: "zhane", 0xd5. «Zhen», 0xd5f4: «Zheng», 0xd6a5: «Zhi», 0xd6d0: «Zhong», 0xd6db: «Zhou», 0xd6e9: «Zhu», 0xd7a5: «Zhua», 0xd7a7: «Zhua», 0xd7a. 0xd7ae: "Zhuan", 0xd7b5: "Zhui", 0xd7bb: "Zhun", 0xd7bd: "Zhuo", 0xd7c8: "zi", 0xd7d7: "Zong", 0xd7de: "zu", 0xd7e2: "zu", 0xd7ea: ", 0xd7ea:", ", 0xd7ea:", ", 0xd7ea:", ", 0xd7ea:", ", 0xd7ea:", "zou". 0xd7ec: "zui", 0xd7f0: "Zun", 0xd7f2: "zuo"}; var spellarray = new Array (); var pn = ""; Функция pinyin (char) {if (! char.charcodeat (0) || char.charcodeat (0) <1328) return char; if (spellarray [char.charcodeat (0)]) return spellarray [char.charcodeat (0)] execscript ("asccode = hex (asc (/" " + char +"/"))", "vbscript"); asccode = eval ("0x" + asccode); if (! (Asccode> 0xb0a0 && asccode <0xd7f3)) return char; for (var i = asccode; (! spell [i] && i> 0);) i--; вернуть заклинание [i]; } function topinyin (str) {var pstr = "" for (var i = 0; i <str.length; i ++) {if (str.charat (i) == "/n") pStr += "<br>" else pstr += "<ruby style = 'ruby-align: center'>" +str.charat (i) +"<rt>" +pinyin (str) (i) +"<rt> "</rt> </ruby>" // else pstr + = pinyin (str.charat (i)) + ""} return pstr; } function topeinyinonly (str) {var pstr = "" for (var i = 0; i <str.length; i ++) {if (str.charat (i) == "/n") pstr += "<br>" else pstr += pinyin (str.charat (i)); // PSTR + = "" + pinyin (str.charat (i)); // else pstr + = pinyin (str.charat (i)) + ""} return pStr; } function topinyinshengmu (str) {var pstr = "" for (var i = 0; i <str.length; i ++) {if (str.charat (i) == "/n") pstr+= ""; else pstr += pinyin (str.charat (i)). charat (0); // else pstr + = pinyin (str.charat (i)) + ""} return pStr; } function pinyinsort (a, b) {var rvalue = 0 for (var i = 0; i <a.length; i ++) {var pina = pinyin (a.charat (i)) var pinb = pinyin (b.charat (i)) if (rvalue = pina> pinb? 1: pinb? -1: 0). index.html[html] view plain copy View code fragments derived to my code fragments on CODE<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="js/autoComplete.js"></script> <script type="text/javascript" src = "js/pinyinhanzi.js"> </script> <script type = "text/javascript"> // custom Правил Function Companerules (inputstr, selectText) {// Сопоставление китайских символов и возвращаемое пинеин SelectText.Indexof (inputStr)! = -1 || topinyinshengmu (selecttext) .indexof (inputstr)! = -1 || topinyinonly (selecttext) .indexof (inputstr)! = -1; } addloAdevent (func); function func () {var textObj = document.getElementById ("txtDisplay"); var CityObj = document.getElementById ("City"); var AutoComplete = New AutoComplete (TextObj, CityObj, 10, 300); AutoCOMPLETE.Init (); } </script> </head> <body> <input type = "text" id = "txtdisplay"/> <select id = "city"> <vition value = "1"> peijing </option> <valie = "2"> shanghai </option> <опция значения = "3"> guangzhou </antupic value = "6"> tianjin </option> <option value = "7"> shenyang </option> <vitue value = "8"> nanjing </option> <option value = "9"> wuhan </option> <опция value = "10"> Changchun </option> <опция value = "11"> chengdu </antain> <fica value = "13"> Hangzhou </option> <option value = "14"> qingdao </option> <value = "15"> jinan </option> <option value = "16"> xiamen </option> <опция value = "17"> fuzhou </option> <опция value = "18"> xi'an </option> <plaint vatue = "19" value = "20"> Harbin </option> </select> </body> </html>Примечание. Эта версия имеет некоторые ошибки и несовместимость с другими (кроме III) браузерами.
Выше приведено соответствующие знания, представленные вам о JS, реализующей функцию поиска Pinyin Pinyin в IE8. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!