作業中のサイトで require を使用しています。チェックアウトの作業中に、遭遇して発行しました。クレジットカードの画像を変更して、有効化されたカード番号が入力された番号であることを示すようにしようとしています。
ただし、キーを押すたびに、次のエラーが発生します。
Uncaught TypeError: object is not a function
そして、それは私の「コントローラー」の12行目から来ていると言います。
var chkCard = new CreditImage($(this).val(), '.icon-credit-cards');
キャッチされていない TypeError: オブジェクトは関数ではありません (3 回繰り返されます)
これが私の「プレゼンター」別名assets/scripts/presenters/CreditImage.jsです
require(
[
'jquery'
],
function ($) {
"use strict";
var CreditImage = function ($number, $el) {
// Match and define
var visa = $number.match(/^4[0-9]{12}(?:[0-9]{3})?$/);
var mastercard = $number.match(/^5[1-5][0-9]{14}$/);
var amex = $number.match(/^3[47][0-9]{13}$/);
var discover = $number.match(/^6(?:011|5[0-9]{2})[0-9]{12}$/);
var matched;
// Create matched var
if (visa) {
matched = "visa";
} else if (mastercard) {
matched = "mastercard";
} else if (amex) {
matched = "amex";
} else if (discover) {
matched = "discover";
}
if (matched) {
// Highlight the matched credit card
$("."+$el+":not("+$el+"-" + matched + ")").addClass($el);
$("."+$el).addClass($el+"-" + matched);
} else {
// No match, highlight them all
$(".+$el).removeClass().addClass($el);
}
return matched;
}
}
);
そして、ここに「コントローラー」があります:
require(
[
'jquery',
'assets/scripts/presenters/CreditImage'
],
function ($, CreditImage) {
'use strict';
$(function () {
// Credit card validation
$("#add-cc-card-number").bind("keyup", function () {
var chkCard = new CreditImage($(this).val(), 'icon-credit-cards'));
});
});
}
);