html怎么防止表单重复提交,js防止表单重复提交的解决方法
防止表單重復(fù)提交,通常會通過attachEvent在 form的onsubmit事件中寫一個方法,每次觸發(fā)該事件時執(zhí)行該方法,可以給form增加一個submited屬性,每次判斷這個屬性,為 false時繼續(xù)提交表單并且設(shè)置form.submited=true,不則拒絕重復(fù)提交。
這樣會存在一些問題:提交表單一般有三種方式
submit按鈕
當(dāng)form中只有一個文本本框按回車的時候
自己寫腳本提交
前兩種是可以觸發(fā) onsubmit事件的,但是第三種不會。
因此,僅靠捕獲onsubmit事件時不行的,還必須在form的submit方法執(zhí)行前,判斷表單是否在提交。
來看下面的代碼:
復(fù)制代碼 代碼示例:
function $setFormCheckSubmited(){
var frms=document.forms;
for(var i=0;i
{
frms[i].baseSubmit=frms[i].submit;//保存表單原來的submit 方法
frms[i].submited=false;//添加一個submited屬性,并且設(shè)置其為false
frms[i].submit=new Function("$submitForm(this)");
$addElementEventHandler(frms[i],"onsubmit","$submitForm(document.forms["+i+"])");
}
}
//提交一個表單,如果當(dāng)前表單已經(jīng)提交,按么就不會繼續(xù)提交該表單
function $submitForm(frm)
{
if (frm.submited) return false;
frm.submited=true;
frm.baseSubmit();
}
//下面是addElementEventHandler的實(shí)現(xiàn)
/*
添加一個方法到到一個對象的一個的一個事件中
element 要設(shè)置的對象
eventName 事件名稱, 字符串類型的。
methodName表示函數(shù)名稱,字符串類型的。
*/
function $addElementEventHandler(element,eventName,methodName)
{
if (document.all)
{
element.attachEvent(eventName,new Function(methodName));
}
else
{
if (eventName.substring(0,2)=="on") eventName=eventName.substring(2);//firefox中所有的事件名稱前面是沒有on的。
element.addEventListener(eventName,new Function(methodName));
}
}
完整的例子如下:
復(fù)制代碼 代碼示例:
防止表單重復(fù)提交_www.jquerycn.cnfunction CheckUserName(){
if (document.FORM1.UserName.value == '' ){
alert('請輸入要注冊的會員!');
document.FORM1.UserName.focus();
return false;
}
document.FORM1.NextStep.disabled=true;
document.FORM1.NextStep.value='請稍后...'
return true;
}
新用戶注冊
第二步:設(shè)定用戶名* 用戶名:
另一種實(shí)現(xiàn)方法:
復(fù)制代碼 代碼示例:
function formsubmit() {
Today = new Date();
var NowHour = Today.getHours();
var NowMinute = Today.getMinutes();
var NowSecond = Today.getSeconds();
var mysec = (NowHour*3600)+(NowMinute*60)+NowSecond;
if((mysec-document.formsubmitf.mypretime.value)>600){
//600只是一個時間值,就是5分鐘內(nèi)禁止重復(fù)提交,值隨便設(shè)
document.formsubmitf.mypretime.value=mysec;
}
else{
alert(' 按一次就夠了,請勿重復(fù)提交!請耐心等待!謝謝合作!');
return false;
}
document.forms.formsubmitf.submit();
}
此方法的缺點(diǎn):刷新一次,檢測就不起作用,好處就是利用JS檢測,不需要額外的權(quán)限支持。
解決問題的方法總是不止一種,哪個更適合你,哪個就是更好的,你說呢?
總結(jié)
以上是生活随笔為你收集整理的html怎么防止表单重复提交,js防止表单重复提交的解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iphone4 base64 mp3 无
- 下一篇: 在计算机科学中计算是指,在计算机中数值计