2015-03-05 7 views
0

У меня есть код jQuery, который должен изменить кириллический вход на латиницу. Это ищет позицию кириллического символа в массиве и заменяет его на Latin Char, к сожалению, я получаю undefined.jQuery return undefined при работе с String.FromCharCode

$("input[name*=Name]").keypress(function (e) { 
      if (e.charCode >= 1000 && e.charCode <= 1103) { 
       var englishchars = ["a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "yi", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "c", "ch", "sh", "shch", "i", "e", "yu", "ya"]; 
       var slavicchars = ["a", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "c", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ы", "э", "ю", "я"]; 
       var verified = String.fromCharCode(e.key).match(/[^а-яё]/); 
       if (verified) { 
        e.preventDefault(); 
        //If it's first char return, if not - get last char 
        var lastchar = this.value.length > 1 ? this.value.substr(-1) : this.value; 
        //Get position of Cyrillic char in array 
        var russiancharindex = jQuery.inArray(lastchar, slavicchars); 
        //Looking for corresponding Latin char 
        var englishcharindex = englishchars[russiancharindex]; 
        this.value = this.value.replace(lastchar, englishcharindex); 
       } 
      } 
     }); 
+0

Где именно вы получаете 'undefined'? – hindmost

+0

var lastchar = this.value.length> 1? this.value.substr (-1): this.value; - это возвращает пустую строку (на самом деле она не определена). –

+1

С событием 'keypress'' e.charCode' будет правильным, но 'this.value' будет значением * до *, будет зарегистрировано новое нажатие клавиши. Попробуйте изменить '.keypress' на' .keyup'. –

ответ

0

Использование String.fromCharCode(e.which). e.key не является собственностью.