Yahoo 知識+ 將於 2021 年 5 月 4 日 (美國東岸時間) 停止服務,而 Yahoo 知識+ 網站現已轉為僅限瀏覽模式。其他 Yahoo 資產或服務,或你的 Yahoo 帳戶將不會有任何變更。你可以在此服務中心網頁進一步了解 Yahoo 知識+ 停止服務的事宜,以及了解如何下載你的資料。
表單功能document.form1.submit();問題
請問大大一個問題困擾小弟很久了...
實在是找不到方法所以貼上語法請各位大大幫忙
我要做一個表單寄到信箱的功能
現在問題出在 我想設定個別欄位要驗證裡面的內容是否正確或輸入(包含信箱格式)
但是現在問題卡在不管輸入什麼內容,按送出都顯示請填寫姓名,郵件不會送出。
<SCRIPT language=javascript>
function checkform()
{
var name=document.getElementById("sndname").value;
var mail=document.getElementById("sendmail").value;
var subject=document.getElementById("subject").value;
var mailbody=document.getElementById("sendmail").value;
if (form1.name.value=="")
{
document.form1.submit();
}else{
alert("請填寫姓名");
form1.sndname.focus();
}
{
email=form1.mail.value;
!/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/.test(email)
alert("mail格式不對,請重新輸入");
form1.sendmail.focus();
}
{
form1.mailbody.value==""
alert("請填寫內容");
form1.sendbody.focus();
return false;
}
}
</SCRIPT>
這串語法我已經試過放在倒數第四行return false;的上面
但是還是失敗
}else{
document.form1.submit();
這個subject欄位因為是下拉選單,所以我就沒做篩選了,這樣對嗎?
送出之後,在還沒有傳送成功之前,按鈕點幾下就可以送幾封郵件,有辦法防止嗎?
如果之後我想加入驗證碼,需要修改到上面的語法嗎?
可以直接告訴我有什麼要改的地方,或是貼給我讓我對照那裡的問題,謝謝!
1 個解答
- 6 年前最愛解答
告訴你 怎麼改之前,先教你用瀏覽器 debug
打開瀏覽器後,按下鍵盤上的 F12,會跳出開發者模式
( 這邊以 Google Chrome 當例子,其他瀏覽器好像也有,但詳細操控我不熟悉 )
冒出一排可選的 Tab 按鈕(如下)
Elements、Network、Sources ......... Console
最後面那個 Console 可以讓 Javascript 作一些操控和顯示記錄
(如果javascript 發生錯誤,也會顯示 錯誤記錄)
如果你也寫一些 log (語法 如下面這行)
console.log( 你想在Console 顯示的內容 );
甚至還可以下中斷點,讓 javasrcipt 逐行執行
===========================================
以你的例子,在 Console 應該會顯示一個錯誤
>> Uncaught TypeError: Cannot read property 'submit' of undefined
這行跳出的錯誤 >> document.form1.submit();
請修正成 >> document.getElementById("form1").submit();
===============================
連按這個問題,你可以按下第一次的時候,就把按鈕給封鎖起來
如果有檢查表單有未填資料,或其他需要,再打開按鈕
也可以表單送出時,把內容記錄起來,如果發生連點的情況,只要內容沒有發生異動,那就不送出表單。
其實方法蠻多的,不只有這些
===============================
驗證碼這問題,得看驗證的方法,沒有絕對的答案