Ich versuche, das Modul Muster zu verwenden, um eine Suchfunktion zu bauen:Die jQuery-Modulfunktion gibt unerwartet 'Uncaught TypeError' zurück?
$("#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);
})();
beim Laufen ich diesen Fehler:
script.js:28 Uncaught TypeError: Cannot read property 'validateTerm' of undefined
Ich klicken Sie auf die Schaltfläche #search
mit einem blank Feld, erwartet die searchFunc, um den Begriff zu validieren und zeigen Sie dann das #searchErrors
div mit meiner Fehlermeldung angehängt. Was verursacht diesen Fehler?
Haben Sie versucht, 'var validateTerm = function (term) {' mit 'this.validateTerm = function (term) {'? \ – gurvinder372
über 'searchFunc.validateTerm (term);' zu ersetzen, machen Sie eine console.log von term und es wird mehr als wahrscheinlich undefiniert sein - versuchen Sie, Zeile 5 zu ändern, um 'var term = $ (" # searchInput ") zu lesen. val() || ""; "- mehr als wahrscheinlich haben Sie einen Tippfehler in der Benennung Ihrer Suchbegriffs-ID –
Und welches ist Zeile 28 in Ihrem Skript? – hotzst