Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: выпадающий список из текстового поля
 
 автор: sanitar   (01.08.2008 в 23:53)   письмо автору
 
 

как сделать чтобы при введении в текстовое поле нескольких букв,под ним выпадал список слов вроде выпадающего списа select(слова допустим есть в файле или базе.не важно),начинающихся на эти буквы,а при выборе подходящего нам варианта список пропадал и оставалось текстовое поле с выбранным нами вариантом.
но при этом чтобы текстовое поле всегда оставалось текстовым полем,даже когда у нас развёрнут список,т.е. мы можем продолжать набирать самостоятельно текст.
надеюсь понятно обьяснил.

  Ответить  
 
 автор: PAT   (02.08.2008 в 00:08)   письмо автору
 
   для: sanitar   (01.08.2008 в 23:53)
 

>надеюсь понятно обьяснил

Время, потраченное на объяснения, могли бы потратить с большей пользой для себя.
Например, на поиск по этому форуму.
И очень быстро нашли бы самую свежую тему по этому вопросу - http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=55869&page=2

  Ответить  
 
 автор: coloboc66   (02.08.2008 в 00:10)   письмо автору
 
   для: sanitar   (01.08.2008 в 23:53)
 

Ну, это, по-моему, не очень маленький код. Вряд-ли кто-то будет его вам писать, если только не имеет готового... Посему задавайте вопросы более конкретно.

  Ответить  
 
 автор: sanitar   (02.08.2008 в 20:16)   письмо автору
 
   для: coloboc66   (02.08.2008 в 00:10)
 

не,я не прошу код.код я и сам напишу.темболее своим кодам больше доверяю....прошу теорию,ибо не представляю даже куда копать.
хотя вот в голову пришла мысль.что если под textarea при событии onChange через xml получать список результатов и выводить div с z-index=-1 ,а в диве емулировать <select> с помошью размеров и скроллбара?как мысль?по-моему просто для воплощения.щас пойду попробую накатать.

  Ответить  
 
 автор: sanitar   (02.08.2008 в 22:51)   письмо автору
 
   для: sanitar   (02.08.2008 в 20:16)
 

во!!!!готово!!!!!!!!!правда пока на нажатие на пункт выпадающего списка не реагирует,и если фокус ввода стоит в тексиареа и нажать F5 то выдаёт весь список(не знаю как устранить),но в остальном вроде работает.тестил на локали под ИЕ6.извините у меня в инете нигде нету сервака под ПХП5 чтоб показать в живую.если кто имеет-закинте.итак,код:

файл index.php
<?
header
('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Cache-Control: post-check=0, pre-check=0'FALSE); 
header('Pragma: no-cache');
echo 
"<html><head><script language='JavaScript' type='text/javascript' src='ind.js'></script></head><body>";
echo 
"<input type=text id=text_in onKeyUp=getresult() onBlur=hide()><br><div id=psevdoselect style='display:none; z-index=0; position: absolute;  left:10px; top:38px;  background-color: ffffff; overflow-y: scroll; overflow-x: hidden; width:155; height:150; noresize';></div><p>fffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff fffffff</p></body></html>";
?>


файл getresult.php
<?
header
('Content-Transfer-Encoding: 8bit');
header('Content-Type: text/xml; charset=UTF-8');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Cache-Control: post-check=0, pre-check=0'FALSE); 
header('Pragma: no-cache'); 
$doc = new DOMDocument('1.0');
$level $doc->createElement("response");
$doc -> appendChild($level);
$list=file("list.txt");
for (
$i=0;$i<count($list);$i++)
 {
  if (
$text==substr($list[$i],0,strlen($text)))
   {
    
$list[$i]=iconv("windows-1251""UTF-8",$list[$i]); 
     
$root $doc->createElement("block");
     
$level->appendChild($root);
     
$item $doc->createElement("word");
     
$root->appendChild($item);
     
$textid $doc->createTextNode("$list[$i]");
     
$item->appendChild($textid);
   }
  else
   {

   }
  }

echo 
$doc->saveXML();
?>



файл ind.js
function getresult()
{
var a=document.getElementById('text_in').value;
  url="getresult.php?text="+a;
  function getXMLHttpRequest() 
     {
      var xmlhttpreq=null;
      if (window.XMLHttpRequest) //Mozilla, Safari & IE 7
       {
    xmlhttpreq = new XMLHttpRequest();
       }
      else if(window.ActiveXObject) // IE 6 and later
       {
    try 
    {
     xmlhttpreq = new ActiveXObject('Msxml2.XMLHTTP');
    }
    catch(err) 
    {
     xmlhttpreq = new ActiveXObject('Microsoft.XMLHTTP');
    }
       }
      return xmlhttpreq;
     }
    function sendRequest(method, url, param)
     {
      var request = getXMLHttpRequest();
      request.open(method, url, true);
      request.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded');
      request.onreadystatechange = function() 
       {
    handleAjaxResponse(request);
       };
      request.send(param);
     }
    function isSuccess(request)
     {
      return request.status == 0 || (request.status >= 200 && request.status < 300);
     }
    function handleAjaxResponse(request)
     {
   if(request.readyState == 4) 
       {
    if(isSuccess(request))
     {
          var tmp_text='';
      var responseXML = request.responseXML;
      var root = responseXML.getElementsByTagName('response').item(0);
      var responseID = Array();
      var responseValue = Array();
      for (var iNode = 0; iNode < root.childNodes.length; iNode++) 
       {
        var node = root.childNodes.item(iNode);
        for (ik = 0; ik < node.childNodes.length; ik++) 
         {
            var block = node.childNodes.item(ik);
              if (block.nodeType != 1) 
            continue;
            switch(block.nodeName)
             {
case "word":
tmp_text+=block.firstChild.nodeValue+"<br>";
break;

                 }
         }
       }
      for(ik=0; responseID.length; ik++)
       {
        document.getElementById(responseID.pop()).innerHTML = responseValue.pop();
       }
     }
document.getElementById('psevdoselect').innerHTML=tmp_text;
document.getElementById('psevdoselect').style.display='inline';
       }
     }
sendRequest('GET', url, null);
};
function hide()
{
document.getElementById('psevdoselect').style.display='none';
};




файл list.txt
ана
ано
прк
анрвавап
уаевпвап
аетгул
оетгул
аук
аункор
аунвы



смотрим,обсуждаем,дополняем.
:))

  Ответить  
 
 автор: sanitar   (06.08.2008 в 18:34)   письмо автору
 
   для: sanitar   (01.08.2008 в 23:53)
 

так что скажете по-поводу кода?

  Ответить  
 
 автор: Николай2357   (06.08.2008 в 20:54)   письмо автору
 
   для: sanitar   (06.08.2008 в 18:34)
 

Вот, ни одной запятой не поменял: http://test.inkz.ru
Что-то не так.

  Ответить  
 
 автор: Николай2357   (06.08.2008 в 21:08)   письмо автору
 
   для: Николай2357   (06.08.2008 в 20:54)
 


<?echo "<input type=text id=text_in onKeyUp=getresult() onBlur=hide()><br><div id=psevdoselect style='display:none; z-index=0; position: absolute;  left:10px; top:38px;  background-color: ffffff; overflow-y: scroll; overflow-x: hidden; width:155; height:150; noresize';></div><p>fffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff fffffff</p></body></html>"
?> 

исправил:

<?echo "<input type=text id=text_in onKeyUp=getresult() onBlur=hide()><br><div id=psevdoselect style='display:none; z-index=0; position: absolute;  left:10px; top:38px;  background-color: ffffff; overflow-y: scroll; overflow-x: hidden; width:155; height:150; noresize';><p>fffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffffffff fffffff</p></div></body></html>"
?> 

теперь работает.

  Ответить  
 
 автор: sanitar   (07.08.2008 в 00:45)   письмо автору
 
   для: Николай2357   (06.08.2008 в 21:08)
 

гм,зачем текст спрятал в див?текст был там спецом чтоб видеть что выпадающий поверх находится.
зы:ты так и загрузил индексовый файл без подключения яваскрипт файла и запрета кеширования,как выложил вверху исправленный код?а то требует обьект....
зызы:у меня на локали работало как я выложил......

  Ответить  
 
 автор: sanitar   (07.08.2008 в 00:56)   письмо автору
 
   для: Николай2357   (06.08.2008 в 21:08)
 

во,перевели один на 5 версию пхп.
http://akademiki.biz/forum/select/index.php
все работает в том виде,как я выложил в коде.без изменений.
на всякий случай уточню.вводить начинайте на русском языке.желательно с буквы а

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования