Добавьте свой расчет в Application class onCreate () method. И добавьте свое решение об активности в Application class.
ОБНОВЛЕНИЕ: Это должно сработать. Я загружаю список имен в массив с именем ListOfNames, он используется в событии onBlur () для проверки введенного имени в данных. Возможно, вам придется сделать некоторые настройки, но я думаю, что это должно сделать то, что вы ищете.
var listOfNames = [];
$(document).ready(function(){
$.get("fetchNames.asp", function(data){
listOfNames = data.split("\r\n");
});
$(".suggest").autocomplete("fetchNames.asp", {
matchContains:false,
minChars:1,
autoFill:false,
mustMatch:false,
cacheLength:20,
max:20
});
$("#tbxName").blur(function(){
if(!listOfNames.containsCaseInsensitive(this.value)){
alert("Invalid name entered");
}
});
});
Array.prototype.containsCaseInsensitive = function(obj) {
var i = this.length;
while (i--) {
if (this[i].toUpperCase() === obj.toUpperCase()) {
return true;
}
}
return false;
}
Я думаю, вместо того, чтобы писать свою собственную функцию для проверки совпадения данных, вы можете просто вызвать search ()
. Если result ()
вызывается с нулевым параметром data
, то вы знаете, что автозаполнение не использовалось и вызывая search ()
при размытии, вы гарантированно получите хотя бы один вызов result ()
.
Я опубликовал этот код для аналогичного вопроса , он может помочь и здесь.
autocompleteField.result(function(event, data, formatted) {
if (data) {
//auto-complete matched
//NB: this might get called twice, but that's okay
}
else {
//must have been triggered by search() below
//there was no match
}
});
autocompleteField.blur(function(){
autocompleteField.search(); //trigger result() on blur, even if autocomplete wasn't used
});
Я использую глобальную структуру данных для отслеживания значений, которые были найдены
var ac_sent = {};
обработчик события .result() вызывается перед обработчиком события .change(), поэтому в . result( event, data, formatted ) я добавляю данные в структуру:
ac_sent[ data ] = true;
затем в обработчике события .change( event) я проверяю, есть ли элемент в ac_sent[ data ], а если нет, я знаю, что слово не было найдено:
$( "#textbox" ).change( function( event ) {
var data = event.target.value;
if ( !ac_sent[ data ] ) {
// result was not found in autocomplete, do something...
ac_sent[ data ] = true; // remember that we processed it
}
return false;
});