2015-03-14 2 views
0

Я получаю эту ошибку, Uncaught TypeError: Cannot read property 'substring' of undefined в форме терминала кредитной карты.Ошибка JS, Uncaught TypeError: Не удается прочитать свойство «подстрока» undefined

Нарушитель линия: $('#exp-month').val(arr[2].substring(2, 4));

Это целая функция.

function checkForReaderInput(string) { 
if (string.substring(0,2) == "%B") { 
string = string.replace('%B', ''); 
var arr = string.split('^'); 
if (arr[0].length == 16) { 
$('#cardnumber').val(arr[0]); 
$('#exp-month').val(arr[2].substring(2, 4)); 
$('#exp-year').val('20'+arr[2].substring(0, 2)); 
var nameArr = arr[1].split('/'); 
$('#cardholdername').val(nameArr[1]+' '+nameArr[0]); 
setMOP(arr[0].substring(0,1)); 
} 
cardParsed = true; 
$('#sdkinputid_cardnumber span.errortext').hide(); 
return false; 
} 
setMOP(string.substring(0,1)); // for manual CC# entry 
} 

Что это должно сделать, это принять считыватель от cardnumber поля и разделите его, чтобы заполнить форму. Он получает поле номера карты, но курсор остается там, и форма пытается отправить. Один это работает. Это не началось, пока я не попытался включить его в форму начальной загрузки. Я избавился от всей проверки. Все, что осталось, это скрипты шлюза. не

страница больше недоступна

+0

arr [2] ничего не возвращает. Вы пытаетесь выполнить метод подстроки на том, что не определено. Я бы попробовал console.log ($ ('# exp-month'). Val()); чтобы увидеть, что вы возвращаете. – byrdr

+0

на странице Я вижу скрипт '$ (" # cardnumber "). Change (function() {checkForReaderInput ($ (this) .val());})' но я не элемент с id 'cardnumber' в любом месте. Можете ли вы просто добавить JSFiddle? –

ответ

0

Оказывается, когда я переехал в новую форму я забыл идентификатор, который окружает форму. Как только я заменил его, ошибки ушли, и он завершился автоматически.

Смежные вопросы