表單功能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 Answer

Rating
  • 5 years ago
    Favorite Answer

    告訴你 怎麼改之前,先教你用瀏覽器 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();

    ===============================

    連按這個問題,你可以按下第一次的時候,就把按鈕給封鎖起來

    如果有檢查表單有未填資料,或其他需要,再打開按鈕

    也可以表單送出時,把內容記錄起來,如果發生連點的情況,只要內容沒有發生異動,那就不送出表單。

    其實方法蠻多的,不只有這些

    ===============================

    驗證碼這問題,得看驗證的方法,沒有絕對的答案

    • Login to reply the answers
Still have questions? Get your answers by asking now.