私は検索機能を構築するためにモジュールパターンを使用しようとしている:jQueryモジュール関数が予期せず 'Uncaught TypeError'を返していますか?
$("#search").click(function(){
var searchFunc = (function(){
event.preventDefault();
var term = $("#searchInput").val();
var warning = $('#searchErrors');
var regex = /^[a-zA-Z0-9\-\s]+$/;
var keyboard = $(':focus');
var error = null;
var validateTerm = function(term){
if (term === ''){
var error = 'Please enter a search term';
}
else if (!regex.test(term)){
var error = 'Please enter only alphanumeric characters (numbers and letters).';
}
return error;
};
var displayErrors = function(error){
warning.append(error).show();
};
keyboard.blur();
})();
searchFunc.validateTerm(term);
if (error != null){
displayErrors.empty();
searchFunc.displayErrors(error);
}
else{
return returnResults(term);
}
});
var returnResults = (function(term) {
console.log(term);
})();
実行しているとき、私はこのエラーを取得:
script.js:28 Uncaught TypeError: Cannot read property 'validateTerm' of undefined
私はAと#search
ボタンをクリックしています空白#searchInput
フィールド、searchFuncがタームの有効性を確認してから、エラーメッセージが追加された#searchErrors
divを表示します。このエラーの原因は何ですか?
あなたは 'searchFunc.validateTerm(term);の上に' 'validateTerm = function(term){'を 'this.validateTerm = function(term){'?\ – gurvinder372
;おそらく定義されていない可能性が高くなります。行5を調整して 'var term = $("#searchInput ")としてみてください。 ""; - あなたの検索語ボックスIDの名前に入力ミスがあります –
そしてあなたのスクリプトの28行目はどちらですか? – hotzst