Событие при нажатии на клавиши
Всем привет подскажите пожалуйста
есть следущий код //событие при нажатии $(".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 цифр. ребят спасайте мозг ломаю придумать не могу. Какие будут предложения? |
Значит всегда == 9.
Я вообще не понял тут идею. Посчитайте цифры сразу, зачем куда-то-что-то-конвертить. Вот такая есть рега для вашего случая ([0-9][ ()+-]*){9}$ пишите ее в pattern инпута if(input.pattern && !new RegExp(input.pattern).test(input.value)) throw 'Х нанэ, тут не 9 цифр!'; else alert('Привет'); |
Да, он цифры считает, но позволяет вводить еще ()+- - для номеров телефонов то есть рега. Нормально вот такая
([0-9][ ()+-]*){10,11}$ потому что в федеральном 10, а со страной 11 |
не не ребят не для номеров. для карт например карта с номером 100-000-000
|
цифры считаю потому что в данном инпуте есть маска которая содержит следущие символы
___-___-___ поэтому чразу все символы считать не могу так как их сразу 11 идет и хоть сколько вводи их всегда будет 11. поэтому мне нужно сначала достать значение value инпута затем убрать все символы кроме цифр(т.к. вводить можно только цифры) и уже потом их подсчитать сколько их но для этого их нужно конвертировать в стринг далее идет подсчет |
а ваш код немного непонял(((( Видимо еще не достаточно скила =DDD. Если не сложно расскажите поподробнее только не говорите тип нуб рак говнокодер и все такое ))) сам ве знаю просто чуточку поподробнее и все заранее спасибо)))
|
ОМГ, вот это каша из джикверей и джаваскриптов. Насколько я понял, нужно чтобы в строке не вводилось больше 9 символов? Накидайте ваш HTML в песочницу и киньте ссылку. А вообще, по хорошему надо посмотреть документацию маски
|
вы почти правильно поняли. Но вся проблема в том что там и так не вводиться больше девяти. так и остается 9 но событие срабатывает. т.е. в инпуте нечего не меняеться а событие все равно происходит с только раз сколько нажал лишнее
|
я понял, т.е. надо, чтобы нажималось только 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 |
Подкоректировал и все стабильно работает большое спасибо))) Лови плюсик)
|
Часовой пояс GMT +3, время: 04:45. |