jQuery autocomplete

  • Автор Автор Hous
  • Начална дата Начална дата

Hous

Registered
Имам 2 въпроса за това толкова известно autocomplete, 1 как при въвеждане на стойност в полето примерно Ime & Ime да не прецаква get метода?(Принципно се преобразува стойността , но при autocomplete прави проблем и го отчита като site.com?adres=ime&ime вместо да замести & със %26)

И другия въпрос е когато имам в името кавички примерно Иван "Картофа"
се показва като Иван "Картофа&quote;
BUG?

пс:Ползвам последната версия jquery UI 1.10... нещо си на autocomplete и 1.8.3 на jquery
Благодаря :)
 
Би ли обяснил по-подробно проблема, защото от теста, който си направих, не виждам да има проблем:
6187106q.png
 
exec каза:
Би ли обяснил по-подробно проблема, защото от теста, който си направих, не виждам да има проблем:
6187106q.png
Явно има предвид при връщането на резултатите. Това го има, преобразува html characters и кавичките.
Просто направи следното:
Където имаш:
[js]$('#id').autocomplete(function() {
// тука ала бала..
});[/js]
Го направи:
[js])$('#id').autocomplete(function() {
// тука ала бала..
}).data("uiAutocomplete")._renderItem = function(ul, item) {
return $("<li>")
.data("item.autocomplete", item)
.append("<a>" + item.label + "</a>")
.appendTo(ul);
};[/js]
Би трябвало да се оправи проблема.
:?:
 
Едното е при връщането на резултатит точно " го замества със "
а другото е, при попълването на полето и пиша приерно test & test и в момента вкойто въведа & символа autocomplet изчезва,въпреки,че запис test & test съществува...
ПС:Ако някой прояви инерес нека ми пише на ЛС ще дам направо демо.
Не успях да се справя с този проблем и т'ва е.
 
Видях нагледно за какво става въпрос и разбрах проблема.

Вероятно информацията в базата ти данни минава през htmlentitites или htmlspecialchars, преди да я запишеш.

Проблем #1 - когато търсиш, ключовата дума също трябва да мине през съответната функция, защото "ти" и "ти" са два различни стринга и няма да има съвпадение.

Проблем #2 - когато подготовяш резултатите за да върнеш отговор към autocomplete, трябва всеки резултат да мине през съответната decode функция - html_entity_decode или htmlspecialchars_ decode

И двата проблема се разрешават от страна на сървъра, в РНР кода. Ето един малък пример:

PHP:
<?php
//вероятно имаш база-данни, но за по-елементарен пример - масив
$data = array(
	'Алисия - Мистър Грешен',
	'Алисия - на "ти" ми говори',
	'Marteen & Daze'
);

//тук ще събираме резултатите, които трябва да върнем към jQuery Autocomplete
//ако няма съвпадения, връщаме празен масив
$result = array();

//ключовата дума минава през една от encode функциите
//за да разрешиме проблема с търсенето
$term = htmlentities(trim($_GET['term']));

if(!empty($term)){

	foreach($data as $source_data){ 

		if(strpos($source_data, $term) !== false){
                        //ако има съвпадение, записваме в резултатите, но
                        //трябва да декодираме за да не се показват entities
			$result[] = array(
                                'label' => html_entity_decode($source_data), 
                                'value' => html_entity_decode($source_data)
                        );
		}
	}

}


echo json_encode($result);
 
Оправих се единия проблем,но другия със & символа все още не разбрах за какво говорим.Той се "прецаква" още при въвеждане спира autocomplete
както сам видя нагледно.

edit:С htmlentities като пиша на бг и се прецаква пък сега
:lol:
edit2:С htmlspecialchars се оправи
+1
И голямо благодаря :)
 

Back
Горе