Javascript.RU

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

Событие при нажатии на клавиши
Всем привет подскажите пожалуйста
есть следущий код


//событие при нажатии
$(".cod").keyup(function(){
//достаем все что написанно в инпуте
	symvols = document.querySelector('.cod').value;


//следущая строка убирает все символы кроме цифр. т.к. в инпут подцепленна маска типа (999-999-999)
	str_int_sym = parseInt(symvols.replace(/\D/g,''));
//переводим в стринг для того чтоб можно было подсчитать кол-во символов
	str_int_sym = String(str_int_sym) ;
// если 9 символов ввели то мы выводим привет
	if(str_int_sym.length == 9)
		{
		alert('Привет');
		}
});


Проблема следущая. когда мы вводим все 9 символов и еще несколько раз жмем на цифру то он открывает столько лишних алертов сколько раз мы нажали лишний раз цифру. И это все понятно т.к. событие идет на нажатии клавиши. а раз нажали и и символов ровно 9 то выполняем . нажал еще раз опять 9 значит выполним еще раз ))))). Но как можно справиься как его застопорить можно после того как ввели 9 цифр. ребят спасайте мозг ломаю придумать не могу. Какие будут предложения?
Ответить с цитированием
  #2 (permalink)  
Старый 06.11.2014, 22:01
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Значит всегда == 9.

Я вообще не понял тут идею. Посчитайте цифры сразу, зачем куда-то-что-то-конвертить.

Вот такая есть рега для вашего случая

([0-9][ ()+-]*){9}$

пишите ее в pattern инпута

if(input.pattern && !new RegExp(input.pattern).test(input.value))
  throw 'Х нанэ, тут не 9 цифр!';
else
 alert('Привет');
Ответить с цитированием
  #3 (permalink)  
Старый 06.11.2014, 22:03
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Да, он цифры считает, но позволяет вводить еще ()+- - для номеров телефонов то есть рега. Нормально вот такая

([0-9][ ()+-]*){10,11}$

потому что в федеральном 10, а со страной 11
Ответить с цитированием
  #4 (permalink)  
Старый 07.11.2014, 08:54
Аспирант
Отправить личное сообщение для sloyi Посмотреть профиль Найти все сообщения от sloyi
 
Регистрация: 16.10.2014
Сообщений: 72

не не ребят не для номеров. для карт например карта с номером 100-000-000
Ответить с цитированием
  #5 (permalink)  
Старый 07.11.2014, 08:56
Аспирант
Отправить личное сообщение для sloyi Посмотреть профиль Найти все сообщения от sloyi
 
Регистрация: 16.10.2014
Сообщений: 72

цифры считаю потому что в данном инпуте есть маска которая содержит следущие символы

___-___-___

поэтому чразу все символы считать не могу так как их сразу 11 идет и хоть сколько вводи их всегда будет 11. поэтому мне нужно сначала достать значение value инпута затем убрать все символы кроме цифр(т.к. вводить можно только цифры) и уже потом их подсчитать сколько их но для этого их нужно конвертировать в стринг далее идет подсчет

Последний раз редактировалось sloyi, 07.11.2014 в 09:00.
Ответить с цитированием
  #6 (permalink)  
Старый 07.11.2014, 08:59
Аспирант
Отправить личное сообщение для sloyi Посмотреть профиль Найти все сообщения от sloyi
 
Регистрация: 16.10.2014
Сообщений: 72

а ваш код немного непонял(((( Видимо еще не достаточно скила =DDD. Если не сложно расскажите поподробнее только не говорите тип нуб рак говнокодер и все такое ))) сам ве знаю просто чуточку поподробнее и все заранее спасибо)))
Ответить с цитированием
  #7 (permalink)  
Старый 07.11.2014, 09:27
Профессор
Отправить личное сообщение для Царь Леонид Посмотреть профиль Найти все сообщения от Царь Леонид
 
Регистрация: 22.08.2013
Сообщений: 217

ОМГ, вот это каша из джикверей и джаваскриптов. Насколько я понял, нужно чтобы в строке не вводилось больше 9 символов? Накидайте ваш HTML в песочницу и киньте ссылку. А вообще, по хорошему надо посмотреть документацию маски

Последний раз редактировалось Царь Леонид, 07.11.2014 в 09:29.
Ответить с цитированием
  #8 (permalink)  
Старый 07.11.2014, 12:30
Аспирант
Отправить личное сообщение для sloyi Посмотреть профиль Найти все сообщения от sloyi
 
Регистрация: 16.10.2014
Сообщений: 72

вы почти правильно поняли. Но вся проблема в том что там и так не вводиться больше девяти. так и остается 9 но событие срабатывает. т.е. в инпуте нечего не меняеться а событие все равно происходит с только раз сколько нажал лишнее
Ответить с цитированием
  #9 (permalink)  
Старый 07.11.2014, 13:49
Профессор
Отправить личное сообщение для Царь Леонид Посмотреть профиль Найти все сообщения от Царь Леонид
 
Регистрация: 22.08.2013
Сообщений: 217

я понял, т.е. надо, чтобы нажималось только 9 раз? Я бы примерно так сделал:
var arr=[];//создаем массив
      $('button').on('click', function(){
        if(arr.length>8){//проверяем длинну массива, если больше 9, return false
          return false}else{
        var s = $(this).val();//если нет заносим значение в массив и выполняем какие-то свои действия
        arr.push(s)
        console.log(arr.length)
          }
     	 });

ССылка на песочницу, просмотр в консоле :http://learn.javascript.ru/play/CN3wu

Последний раз редактировалось Царь Леонид, 07.11.2014 в 13:52.
Ответить с цитированием
  #10 (permalink)  
Старый 07.11.2014, 15:26
Аспирант
Отправить личное сообщение для sloyi Посмотреть профиль Найти все сообщения от sloyi
 
Регистрация: 16.10.2014
Сообщений: 72

Подкоректировал и все стабильно работает большое спасибо))) Лови плюсик)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При нажатии на кнопку появляется другой текст ami_moor Общие вопросы Javascript 3 12.06.2015 16:56
Активация checkbox при нажатии на текст и изменение стиля у текста. ilyakor jQuery 2 10.06.2014 19:34
Google Maps API v3, приближение на одно деление при нажатии на маркер goDev Events/DOM/Window 3 01.06.2014 07:29
Новые элементы в блоке при событие onmouseleave b14de Events/DOM/Window 2 29.05.2014 07:56
Как правильно подавить событие при подключении своего обработчика? Маэстро Firefox/Mozilla 2 03.09.2011 11:46