Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите исправить код (https://javascript.ru/forum/misc/42946-pomogite-ispravit-kod.html)

Apelcun77 14.11.2013 23:43

Помогите исправить код
 
Помогите исправить код
var check_alpha_time = setInterval(check_alpha, 1000);
function check_alpha() {
var alpha = = /\w/;
 if ( document.feedback.firstname.value.search(alpha) !== -1 ) {
  document.all.item("firstname_check").innerHTML = "+";
 }
 else {
   document.all.item("firstname_check").innerHTML = "Некорректные символы";
 }
}

Незнаю почему не работает(, также вместо /\w/ мне нужно еще русские буквы и англ, большие/маленькие и цифры и символы "./\()-_@^"

ixth 15.11.2013 03:03

Ну, чтобы исправить код, нужно сначала понять что он должен делать. Я так понимаю, он проверяет значение поля "firstname" формы "feedback" при помощи регулярки и добавляет что-то типа хинта в какой-то другой элемент… Исходя из этих предположений я думаю, что баг в том, что в третьей строке написано "= =" вместо "=".

В общем-то, есть еще куча вопросов. Например, почему значение проверяется только раз в секунду? Я бы сделал как-то так:

<form action="" id="feedback">
    <input type="text" id="firstname" />
    <span id="firstname_check"></span>
</form>

var inputElem = document.getElementById('firstname');
var hintElem = document.getElementById('firstname_check');
var alpha = /[()\-.\/@^_а-яА-ЯёЁ\w]/;

inputElem.addEventListener('keypress', function () {
    /*
        Важный момент: событие keypress возникает до того как нажатая
        клавиша изменит значение инпута, так что мы немного откладываем
        проверку введенного значения. Совсем ненадолго. На 0. :)
    */
    setTimeout(function () {
        hintElem.innerHTML = alpha.test(inputElem.value) ? '+' : 'Некорректные символы';
    }, 0);
});

Apelcun77 15.11.2013 20:51

спасибо

Apelcun77 15.11.2013 21:14

только вот что-то он не работает у меня, что делать?

ixth 15.11.2013 22:47

Ну, как же не работает, когда работает? )
http://learn.javascript.ru/play/wWC3f

ixth 15.11.2013 22:53

А. Я протупил, конечно. Там неправильная регулярка.

ixth 15.11.2013 23:06

Вот этот вариант рабочий: http://learn.javascript.ru/play/7e4g8
Правда, есть одно «но»: событие input не поддерживается в старых IE < 9, так что для них лучше продублировать его через keypress/keyup/keydown.


Часовой пояс GMT +3, время: 05:31.