Добрый день!
Поскажите, есть поле ввода, куда посетитель введя ID пользователя, должен получить краткую информацию о пользователе. Ввод символов отлавливаю через библиотеку к Jquery
PHP скрипт выглядит так:
Java скрипт выглядит так:
Проблема в том, что если пользователь вводит ID больше 1 символа, то на каждый введенный символ выполняется запрос с БД и выводится информация о пользователе.
Как можно отловить окончание ввода текста и только тогда запускать обработку?
Поскажите, есть поле ввода, куда посетитель введя ID пользователя, должен получить краткую информацию о пользователе. Ввод символов отлавливаю через библиотеку к Jquery
PHP скрипт выглядит так:
| Код |
|---|
define("NOT_CHECK_PERMISSIONS", true);
define("NO_AGENT_STATISTIC", true);
define("NO_KEEP_STATISTIC", true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
// получить пользователя
if(isset($_REQUEST['UID'])){
if (!preg_match('/^[0-9]+$/is', $_REQUEST['UID'])){
$arUser = CUser::GetByLogin($_REQUEST['UID'])->Fetch();
if($arUser){
$returnAnswer = array("type"=>"ok","info" => $APPLICATION->ConvertCharset($arUser['LOGIN']." (".$arUser['NAME']." ".$arUser['LAST_NAME'].")", 'windows-1251', 'utf-8'), "id" => $arUser['ID']);
}else{
$returnAnswer = array("type" => "erroruser","error" => "Такой пользователь не зарегистрирован.");
}
}else{
$arUser = CUser::GetByID($_REQUEST['UID'])->Fetch();
if($arUser){
$returnAnswer = array("type"=>"ok","info" => $APPLICATION->ConvertCharset($arUser['LOGIN']." (".$arUser['NAME']." ".$arUser['LAST_NAME'].")", 'windows-1251', 'utf-8'), "id" => $arUser['ID']);
}else{
$returnAnswer = array("type" => "erroruser","error" => "Такой пользователь не зарегистрирован.");
}
}
}else{
$returnAnswer = array("type" => "error","error" => "Ошибка");
}
echo json_encode($returnAnswer);
|
Java скрипт выглядит так:
| Код |
|---|
$(document).ready(function(){
// вводим пользователя
$('#fuser').bind('textchange', function () {
var user = $('#fuser').val();
$('.detail_user').html("..ждите..");
$.get(
"/bitrix/ajax/get_user.php",
"UID=" + user,
function (result) {
if (result.type == 'error') {
$('.detail_user').html(result.error);
return(false);
}
if (result.type == 'erroruser') {
$('.detail_user').html(result.error);
return(false);
}
if (result.type == 'ok') {
$('.detail_user').html("<a href='http://site.ru/profile/"+result.id+"/'>"+"["+result.id+"]</a>"+result.info);
}
},
"json"
);
});
$('#fuser').bind('notext', function () {
$('.detail_user').html("");
});
});
|
Проблема в том, что если пользователь вводит ID больше 1 символа, то на каждый введенный символ выполняется запрос с БД и выводится информация о пользователе.
Как можно отловить окончание ввода текста и только тогда запускать обработку?