To znowu ja. Tym razem, chyba ostatni raz w tym skrypcie. Chodzi mi o blokad? antyfloodow?, mam ju? zrobione blokad? formularza po jego wys?aniu, chodzi teraz o czasowe usuni?cie blokady. Próbowa?em z funkcjami clearInterval i setInterval ale nie udawa?o si?... Pomo?ecie? Blokada ma by? na 1 minut?.
$(document).ready(function(){
$("#submit").click(function(){
var nameVal = $("#1C2bt").val();
var emailVal = $("#rgrS16").val();
var messageVal = $("#editor").val();
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
var error = '';
var hasError = false;
if(nameVal == '') {
error = error + 'Wpisz swoje imi? i nazwisko<br/>';
hasError = true;
}else if(nameVal == 'podaj swoje imi? i nazwisko'){
error = error + 'Wpisz swoje imi? i nazwisko<br/>';
hasError = true;
}
if(emailVal == '') {
error = error + 'Wpisz adres email<br/>';
hasError = true;
}else if(emailVal == 'podaj email odbiorcy'){
error = error + 'Wpisz adres email<br/>';
hasError = true;
} else if(!emailReg.test( emailVal )) { error = error + 'Wpisz poprawny adres email<br/>';
hasError = true;
}
if(messageVal == '') {
error = error + 'Wpisz swoj? wiadomo??<br/>';
hasError = true;
}else if(messageVal == 'Wpisz swoj? wiadomo??'){
error = error + 'Wpisz swoj? wiadomo??<br/>';
hasError = true;
}
if(!error == ''){
div = $('<div class="result">'+error+'</div>');
$("#body").after(div);
setTimeout(function() { $(div).remove() }, 5000);
}
if(hasError == false) {
$("#form").fadeTo("slow", 0.30, function() {
// dorzucamy kod z obrazkiem sygnalizuj?cym procedowanie danych przez skrypt
// moment kulminacyjny naszej aplikacji w jQuery - przesy?amy dane do skryptu php
$.ajax({
type: "POST",
url: "sendmail.php",
data: { name: nameVal, email: emailVal, message: messageVal },
// msg zawiera warto?? zwrócon? przez skrypt php w przypadku poprawnego zako?czenia dzia?ania
success: function(msg) {
// zapiszmy wynik dzia?ania skryptu na stronie html w div o id=”content”
block_form();
div = $('<div class="result">'+msg+'</div>');
$("#body").after(div);
setTimeout(function() { $(div).remove() }, 5000);
// schowajmy fom?
$("#form").fadeTo("slow", 1.0);
},
// wyst?pi?y b??dy
error: function (XMLHttpRequest, textStatus, errorThrown) {
$("#info2").html('Przepraszamy, wiadomo?? nie mog?a zosta? wys?ana.');
$("#form").fadeOut("slow");
}
});
});
}
return false;
});
});
function unlock_form() {
$("input[name='1C2bt#']").removeAttr("disabled");
$("input[name='rgrS16']").removeAttr("disabled");
$("input[name='gnro^496']").removeAttr("disabled");
$("textarea[name='pm^5']").removeAttr("disabled");
$("input[name='mrgfeo#$1']").removeAttr("disabled");
$("input[name='asd4sdf']").removeAttr("disabled");
}
function block_form(){
$("input[name='1C2bt#']").attr("disabled", "disabled");
$("input[name='rgrS16']").attr("disabled", "disabled");
$("input[name='gnro^496']").attr("disabled", "disabled");
$("textarea[name='pm^5']").attr("disabled", "disabled");
$("input[name='mrgfeo#$1']").attr("disabled", "disabled");
$("input[name='asd4sdf']").attr("disabled", "disabled");
}
EDIT: Ju? nie trzeba, wystarczy?o za pomoc? setTimeout(); wywo?a? funkcj? unlock_form();. Dziwna rzecz, ?e je?li zrobi?em setTimeout(unlock_form(),5000); to nie dzia?a?o, a je?li setTimeout(function() { $("input[name='1C2bt#']").removeAttr("disabled");
$("input[name='rgrS16']").removeAttr("disabled");
$("input[name='gnro^496']").removeAttr("disabled");
$("textarea[name='pm^5']").removeAttr("disabled");
$("input[name='mrgfeo#$1']").removeAttr("disabled");
$("input[name='asd4sdf']").removeAttr("disabled");}, 5000); to dzia?a :D
Edytowane przez Xerxes dnia 30.03.2012 17:28:15
|