メールの検証を送信して、後ボタンのカウントダウン、リフレッシュのカウントダウンの失効を防止します
4084 ワード
シーンの適用
「メール認証の送信」機能を開発する際には、悪意や頻繁なメール認証コードの送信を防止する問題を解決します.一般的な原理は「送信ボタンをクリックするとajax要求をサーバに送信してメール認証コードを送信し、成功すれば送信ボタンをクリック不可に設定し、タイマーを呼び出し、ボタンにカウントダウンを表示する」ことです.このようにカウントダウンストレージを処理しないと、ページをリフレッシュするとカウントダウンが無効になり、ボタンをクリックすることができます.次のソリューションを提供します. cookieストレージによるカウントダウン HTML 5のlocalStorageを利用してカウントダウン を記憶する.
クッキーストレージによるカウントダウン
送信に成功したら残りのカウントダウンをクッキーに保存し、ページがリフレッシュされたときに、クッキーが残りのカウントダウンを保存しているかどうかを確認します.もしあれば、送信ボタンはカウントダウン状態を維持し、クリックできません.そうしないと、送信ボタンはクリックできます.
HTMLコード
JQueryコード
「メール認証の送信」機能を開発する際には、悪意や頻繁なメール認証コードの送信を防止する問題を解決します.一般的な原理は「送信ボタンをクリックするとajax要求をサーバに送信してメール認証コードを送信し、成功すれば送信ボタンをクリック不可に設定し、タイマーを呼び出し、ボタンにカウントダウンを表示する」ことです.このようにカウントダウンストレージを処理しないと、ページをリフレッシュするとカウントダウンが無効になり、ボタンをクリックすることができます.次のソリューションを提供します.
クッキーストレージによるカウントダウン
送信に成功したら残りのカウントダウンをクッキーに保存し、ページがリフレッシュされたときに、クッキーが残りのカウントダウンを保存しているかどうかを確認します.もしあれば、送信ボタンはカウントダウン状態を維持し、クリックできません.そうしないと、送信ボタンはクリックできます.
HTMLコード
JQueryコード
$(function(){
if($.cookie("total")!=undefined&&$.cookie("total")!='NaN'&&$.cookie("total")!='null'){//cookie
timekeeping();
}else{//cookie
$('#btn').attr("disabled", false);
}
function timekeeping(){
//
$('#btn').attr("disabled", true);
var interval=setInterval(function(){// cookie
// cookie
total=$.cookie("total");
//
$('#btn').val(' '+total+' ');
// 1
total--;
if(total==0){// , ,
//
clearInterval(interval);
// cookie
total=$.cookie("total",total, { expires: -1 });
//
$('#btn').val(' ');
//
$('#btn').attr("disabled", false);
}else{//
//
$.cookie("total",total);
}
},1000);
}
//
$('#btn').click(function(event) {
/* Act on the event */
// alert($("#btn").val());
//
var phone=$('#phone').val();
var pre=/^[1][358][0-9]{9}$/;
if(phone==''){
layer.open({
content: ' ',
time: 2
});
return this;
}else{
var pre=/^[1][358][0-9]{9}$/;
if(!pre.test(phone)){
layer.open({
content: ' !',
time: 2
});
return this;
}
}
$.ajax({
url: '',//
type: 'GET',
dataType: 'json',
data: {phone: phone},
})
.done(function(re) {
var str=" , ";
// console.log(re);
if(re){
$.cookie("total",60);
timekeeping();
}else{
switch (re[0]) {
case '160038':
str=" ";
break;
case '160034':
str=" ";
break;
case '160000':
str=" ";
break;
case '000000':
str=" ";
break;
case '112300':
str=" ";
break;
case '160040':
str=" ";
break;
case '160042':
str=" ";
break;
default:
str=" ";
break;
}
}
layer.open({
content: str,
time: 2
});
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});
});
})