Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.05.2015, 19:07
Аспирант
Отправить личное сообщение для ivnjavascript Посмотреть профиль Найти все сообщения от ivnjavascript
 
Регистрация: 11.05.2015
Сообщений: 74

Автокомплит только для кириллицы
Добрый день.
Прошу Вас помочь решить следующую проблему:
Пробую делать автокомплит.
Есть код (еще до конца не доработан, но уже работает).
$(document).ready(function(){
		$('#query').keyup(function(){
			
			var numChars = $(this).val().length;
			
			if (numChars >= 1) {
				var queryString = $(this).val();
				$.post(
				'http://localhost/test/search.php',
				{
					queryString:queryString,
				},
				
				function(data){
					$('#autocomplete').html(data);
				}
				
				);
				
			
			}
			
			});
		});


после ввода первого символа начинает искать совпадения в базе (php кода наверно нет смысла писать сюда).
Хочу сделать так, что при вводе символа реагировал, только на кириллицу. Если не кириллицы, то и код ни чего не делает.

Спасибо за помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 12.05.2015, 08:36
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

event.keyCode гугли
Ответить с цитированием
  #3 (permalink)  
Старый 12.05.2015, 08:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

<input pattern="^[а-яёА-ЯЁ]+$" />
//в обработчике
var re =  new RegExp(this.pattern)
console.log(re.test(this.value))

Последний раз редактировалось laimas, 12.05.2015 в 08:58.
Ответить с цитированием
  #4 (permalink)  
Старый 13.05.2015, 16:25
Аспирант
Отправить личное сообщение для ivnjavascript Посмотреть профиль Найти все сообщения от ivnjavascript
 
Регистрация: 11.05.2015
Сообщений: 74

Сообщение от laimas Посмотреть сообщение
<input pattern="^[а-яёА-ЯЁ]+$" />
//в обработчике
var re =  new RegExp(this.pattern)
console.log(re.test(this.value))
Если Вам не сложно, можно написать сразу на основе моего кода.
Сейчас вижу в консоле true false, но дописать пока не получается...
и сразу вопрос будет ли работать это если ,браузер не поддерживает html5?

Последний раз редактировалось ivnjavascript, 13.05.2015 в 16:54.
Ответить с цитированием
  #5 (permalink)  
Старый 13.05.2015, 16:30
Аспирант
Отправить личное сообщение для ivnjavascript Посмотреть профиль Найти все сообщения от ivnjavascript
 
Регистрация: 11.05.2015
Сообщений: 74

в консоле вижу true или false, я как понял надо дописывать
Ответить с цитированием
  #6 (permalink)  
Старый 13.05.2015, 16:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

$(document).ready(function(){
        $('#query').keyup(function(){
             
            var numChars = this.value, re =  new RegExp(this.pattern);
             
            if (numChars.lengt >= 1 && re.test(numChars)) {
                $.post(
                    'http://localhost/test/search.php', {
                        queryString: numChars,
                    }, 
                    function(data) {
                        $('#autocomplete').html(data);
                    }
                );
            }
     });
});
Ответить с цитированием
  #7 (permalink)  
Старый 13.05.2015, 19:24
Аспирант
Отправить личное сообщение для ivnjavascript Посмотреть профиль Найти все сообщения от ivnjavascript
 
Регистрация: 11.05.2015
Сообщений: 74

Сообщение от ivnjavascript Посмотреть сообщение
Если Вам не сложно, можно написать сразу на основе моего кода.
Сейчас вижу в консоле true false, но дописать пока не получается...
и сразу вопрос будет ли работать это если ,браузер не поддерживает html5?
Сообщение от laimas Посмотреть сообщение
$(document).ready(function(){
        $('#query').keyup(function(){
             
            var numChars = this.value, re =  new RegExp(this.pattern);
             
            if (numChars.lengt >= 1 && re.test(numChars)) {
                $.post(
                    'http://localhost/test/search.php', {
                        queryString: numChars,
                    }, 
                    function(data) {
                        $('#autocomplete').html(data);
                    }
                );
            }
     });
});
чё то не рабоает
Ответить с цитированием
  #8 (permalink)  
Старый 13.05.2015, 21:43
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

регу в атрибут pattern засунули?

Я только одного не понял - как php-то работает? Ну допустим я начинаю набирать д - мне захерачивают все на д - дебил, дебильный, дебилоид - ага, допустим меня устраивает дебильный - выбираю. И значит вхождений для дебил и дебилоид - не увижу когда нажму Ок.

Еще раз. Вы не можете сделать как на яндексе или гугле без специального ПО, ну например типа сфинкса.
Ответить с цитированием
  #9 (permalink)  
Старый 13.05.2015, 21:44
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

да, еще локальхост - в нелокали все может выглядеть гораздо печальнее
Ответить с цитированием
  #10 (permalink)  
Старый 14.05.2015, 07:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

ivnjavascript,
Что именно не работает?
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script> 
$(function() {
    $('#query').keyup(function() {
        var val = this.value, re =  new RegExp(this.pattern);
        if(val.length > 1 && re.test(val)) {
            alert('Условие выполнено')
        }
    })
});
</script>     
</head> 
<body>
<input id="query" pattern="^[а-яёА-ЯЁ]+$" />
</body> 
</html>

Но такого обработчика будет мало. Пользователь может редактировать свой ввод, то есть использовать клавиши стрелка влево/вправо, а также может использовать клавишу табуляции для перемещения между полями... Поэтому обработчик должен исключать обработку нажатий этих клавиш.

Примечание: в паттерне диапазон национальных символов лучше задавать в unicode.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможность ввода только кириллицы Iceman77 jQuery 4 10.05.2024 12:22
Обясните задержку Faab jQuery 11 15.06.2013 09:32
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55
Не работает AppendChild для div, причём только в IE _Kpot_ Internet Explorer 5 12.02.2009 10:55
JS'ом поменять textDecoration только для случаев link и visited lancer Элементы интерфейса 3 05.04.2008 20:51