Попытка определить номер CC и выбрать тип
Я работаю над заданием, в котором мне нужно написать JS, который будет читать номер кредитной карты, а затем установить соответствующий флажок для любого типа карты (visa, amex, Discover, mastercard).
HTML был предварительно написан, я просто должен был написать JS.
Предполагается, что вы сможете набрать число и табуляцию, и он автоматически выберет тип, но вместо этого я получаю сообщение об ошибке "Uncaught TypeError: обнаружение не является функцией"
Я никогда не сталкивался с этим, кто-нибудь может просветить меня?
"use strict";
function selectCardType() {
var cardNumValue = document.getElementById("ccNum").value;
var visa = /^4[0-9]{12}(?:[0-9]{3})?$/;
var mc = /^5[1-5][0-9]{14}$/;
var discover = /^6(?:011|5[0-9]{2})[0-9]{12}$/;
var amex = /^3[47][0-9]{13}$/;
if (visa.test(cardNumValue)) {
document.getElementById("visa").checked = "checked";
} else if (mc.test(cardNumValue)) {
document.getElementById("mc").checked = "checked";
} else if (discover(cardNumValue)) {
document.getElementById("discover").checked = "checked";
} else if (amex(cardNumValue)) {
document.getElementById("amex").checked = "checked";
}
}
function createEventListeners() {
var cardNum = document.getElementById("ccNum");
if (cardNum.addEventListener) {
cardNum.addEventListener("change", selectCardType, false);
} else if (cardNum.attachEvent) {
cardNum.attachEvent("onchange", selectCardType);
}
}
if (window.addEventListener) {
window.addEventListener("load", createEventListeners, false);
} else if (window.attachEvent) {
window.attachEvent("onload", createEventListeners);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=page-width, initial-scale=1.0">
<title>Hands-on Project 8-3</title>
<link rel="stylesheet" href="styles.css" />
<script src="modernizr.custom.65897.js"></script>
</head>
<body>
<article>
<form action="results.htm">
<fieldset id="paymentInfo" class="text">
<legend>Payment Information</legend>
<div class="offset">
<label for="ccNum">Card #</label>
<input id="ccNum" name="CardNumber" type="number" required="required" />
<div id="ccNumErrorMessage"></div>
</div>
<div id="cards" class="inline">
<input id="visa" name="PaymentType" type="radio" value="Visa" />
<label for="visa">Visa</label>
<input id="mc" name="PaymentType" type="radio" value="MC" />
<label for="mc">Master Card</label>
<input id="discover" name="PaymentType" type="radio" value="Discover" />
<label for="discover">Discover</label>
<input id="amex" name="PaymentType" type="radio" value="AmEx" />
<label for="amex">American Express</label>
</div>
<div class="offset">
<label>Expiration</label>
<div class="inline" id="exp">
<label for="expMo" id="expMoLabel">Expiration Month</label>
<select id="expMo" name="ExpMonth" required="required">
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<label for="expYr" id="expYrLabel">Expiration Year</label>
<select id="expYr" name="ExpYear" required="required">
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
<option value="2021">2021</option>
</select>
</div>
<label for="cvv">CVV</label>
<input id="cvv" name="CVVValue" type="number" required="required" />
</div>
</fieldset>
</form>
</article>
<script src="script.js"></script>
</body>
</html>