Я получаю эту ошибку, 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
поля и разделите его, чтобы заполнить форму. Он получает поле номера карты, но курсор остается там, и форма пытается отправить. Один это работает. Это не началось, пока я не попытался включить его в форму начальной загрузки. Я избавился от всей проверки. Все, что осталось, это скрипты шлюза. не
страница больше недоступна
arr [2] ничего не возвращает. Вы пытаетесь выполнить метод подстроки на том, что не определено. Я бы попробовал console.log ($ ('# exp-month'). Val()); чтобы увидеть, что вы возвращаете. – byrdr
на странице Я вижу скрипт '$ (" # cardnumber "). Change (function() {checkForReaderInput ($ (this) .val());})' но я не элемент с id 'cardnumber' в любом месте. Можете ли вы просто добавить JSFiddle? –