Piotr Stanek

Piotr Stanek Programista PHP /
JS developer

Temat: $.get pytanie

hej

mam taki

kod

ajax : {
check: function(email) {

if(testPattern(email,"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])"))
{
$.get("index.php?item=main&action=issetAdministratorMail", { value: email }, function(data) {
if(data.valid==false)
valid_ajax_status = false;
else
valid_ajax_status = true;
});
return valid_ajax_status;
}
},
msg : "E-mail already exists."
},


kawałek validacji piszę sobie

I teraz jak wpisujemy w polu input tekst to uruchomi się wyżej wymieniony kod. działa ale chciałbym go zoptymalizować. Jak ktoś zacznie pisać pisać i pisać to ajax wyśle dużo zapytań i może się coś zawieszać.
Chcę by taki $.get np byl wywoływany z minimalną przerwą 3 sek. od ostatniego wysłania zapytania przez ajax

mam nadzieje ze zrozumiale napisałem.

zabezpieczyłem się przed tym by nie wysyłał zapytania dla stringów które nie są mailem, od strony 5 dla samej akcji też blokuję na 3 sekundy. by nie było jakieś zwolnień..
Piotr Stanek

Piotr Stanek Programista PHP /
JS developer

Temat: $.get pytanie

albo blokowanie szybkiego pisania w polu input (nie wiem czy tak się da i czy to sensowne)

konto usunięte

Temat: $.get pytanie

Na moje oko mówisz o throttlingu: http://benalman.com/projects/jquery-throttle-debounce-...
Piotr Stanek

Piotr Stanek Programista PHP /
JS developer

Temat: $.get pytanie

mam takie cos:


attach : function(event) {

var obj = this;
if(event == "change") {
obj.field.bind("change",function() {
return obj.validate();
});
}
if(event == "keyup") {
obj.field.bind("keyup",function(e) {
return obj.validate();
});
}
},
...


może jakaś rada jak to wkomponować tutaj. czyli w tym miejscu gdzie w ogóle inicjuje wszystko.
Piotr Stanek

Piotr Stanek Programista PHP /
JS developer

Temat: $.get pytanie

dla potomnych:



function throttle(fn, delay) {
var timer = null;
return function () {
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(context, args);
}, delay);
};
}




Zastosowanie:



attach : function(event) {

var obj = this;
obj.field.bind("change",throttle(function() {
return obj.validate();
},1200));
obj.field.bind("keyup",throttle(function(e) {
return obj.validate();
},1200));

},

......

Piotr Stanek edytował(a) ten post dnia 08.02.12 o godzinie 20:14

Następna dyskusja:

jquery - pytanie o selektor




Wyślij zaproszenie do