Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: keypress
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » keypress

Страниц (1): [1]
 

1. ShuvaL - 20 Марта, 2011 - 20:37:32 - перейти к сообщению
Такая проблема на jQuery к полю ввода тип text нужно привязать событие keypress так как keyup не совсем подходит для решеия задачи, но как только я подключаю keypress в поле вообще ничего нельзя ввести, оно как-бы умирает.

Что бы вопросов не было это ajax поиск

CODE (javascript):
скопировать код в буфер обмена
  1. $(function() {
  2.                    $("#searchTx").click(function() {
  3.                         $("#general").hide();
  4.                         $("#search").show();});
  5.                        
  6.                          $("#searchTx").keypress(function() {
  7.         // получаем то, что написал пользователь
  8.         var searchString    = $("#searchTx").val();
  9.         // формируем строку запроса
  10.         var data            = 'search='+ searchString;
  11.  
  12.         // если searchString не пустая
  13.         if(searchString) {
  14.             // делаем ajax запрос
  15.             $.ajax({
  16.                 type: "POST",
  17.                 url: "do_search.php",
  18.                 data: data,
  19.                 beforeSend: function(html) { // запустится до вызова запроса
  20.                     $("#results").html('');
  21.                     $("#searchresults").show();
  22.                     $(".word").html(searchString);
  23.                },
  24.                success: function(html){ // запустится после получения резуотатов
  25.                     $("#results").show();
  26.                     $("#results").append(html);
  27.               }
  28.             });
  29.         }
  30.         return false;
  31.     });
  32.  });


Поле:
CODE (html):
скопировать код в буфер обмена
  1. <div id="searchForm">
  2. <img align="left" id="searchSb" src="img/icons/search.png"/>
  3. <input id="searchTx" type="text" align="left" size="41" class="inputUps"/>
  4. </div>
2. Champion - 20 Марта, 2011 - 21:09:26 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. ...// получаем то, что написал пользователь
  2.                 $("#searchTx").val( $("#searchTx").val() + String.fromCharCode(e.which))
  3.         var searchString    = $("#searchTx").val()...
вот такое извращение пришло в голову. Только нажатие бекспейса, делита и пр. надо обработать
3. DeepVarvar - 20 Марта, 2011 - 21:26:02 - перейти к сообщению
Не, не...
Нужно иметь два поля (второе скрытое), первое это то что вводит пользователь сейчас.
Второе это старое значение строки поиска пользователя.

Варианта 2:
1. Биндим нажатия клавиш и проверка полей
2. setInterval и в нем проверка этих полей

И если новый текст поиска отличается от старого - посылаем запрос.
4. DlTA - 20 Марта, 2011 - 23:24:40 - перейти к сообщению
ShuvaL,
а может отслеживать не нажатие кнопки, изменение состояние поля ввода?!
http://www[dot]askdev[dot]ru/question/44[dot][dot][dot]%82%D0%B8%D1%8F/
5. ShuvaL - 21 Марта, 2011 - 15:09:00 - перейти к сообщению
Нет-нет, мне куда интересней узнать почему у меня keypress замораживает поле, и как это решить.
DlTA keypress имено и отслеживает изменение состояние поля ввода
6. Viper - 21 Марта, 2011 - 15:44:30 - перейти к сообщению
ShuvaL "return false;" это для чего внутри keypress() ? Если чисто для эксперимента, то уберите. Оно вам ничего не даст, и работать тоже. Для этого есть stopPropagation().

Вешать обработчик лучше на keydown и внутри проверять уже event.keyCode.
7. ShuvaL - 21 Марта, 2011 - 17:37:50 - перейти к сообщению
Viper
Благодарю, Радость совсем что-то я сплошал, не надо внутри keypress false возвращать.
8. JustUserR - 22 Марта, 2011 - 00:25:53 - перейти к сообщению
ShuvaL пишет:
Нет-нет, мне куда интересней узнать почему у меня keypress замораживает поле, и как это решить
Возможной причиной осуществления некорректного функционирования клиентского HTML-приложения, проявление которого производится в виде несоответственной обработки базовых пользовательских событий для элемента управления, является использование средства jquery framework, осуществляющего константное определение и исполнение предполагаемых действий в разделеном внешнем элементном уровне трактования, относительно которого не обеспечивается требуемая синхронизация для интегрируемых значений статических связных фунциональных обеъектов обработки базовых событий, и внедряемых координационных элементов в среднем уровне трактования

 

Powered by ExBB FM 1.0 RC1