2014-12-05 190 views
0

由於NDA無法提供此項目的鏈接,但希望我發佈的代碼足以解決此問題。表單上的Javascript警報問題:警報提示不斷顯示

我在做一個簡單的PHP聯繫表單。沒有瘋狂。兩個文本輸入框和一個用於驗證年齡的複選框。如果您不選中表單,則無法參加比賽。

我有驗證工作....到一個點。這是發生了什麼。當我不選中複選框並嘗試提交表單時,我收到提醒提示,說我不是18歲或以上。 JS是這樣的:

if (!document.forms[0].age.checked) 
{ 
    alert("Sorry, you must be over 18 to enter...Please check the over 18 box to proceed"); 
} 

這樣的工作,我點擊「確定」,但然後警報提示立即回來!我基本上陷入了一個循環。

任何人都知道如何正確地做到這一點,所以我可以讓窗體工作?

+1

什麼是事件時調用這個? – 2014-12-05 22:10:50

回答

0

你試過

if (!document.forms[0].age.checked) { 
    alert("Sorry, you must be over 18 to enter...Please check the over 18 box to proceed"); 
    return false; 
} 
+0

謝謝。喬,這最有效。 – 2014-12-06 01:28:52

0

必須在形式檢查提交事件(內嵌在這裏,但應該是不顯眼的):

<form onsubmit="return validate(this)"...

,做

function validate(theForm) { 
    if (!theForm.age.checked) alert("Please...."); 
    return theForm.age.checked; 
} 
0

你可以嘗試這樣的:

var validateForm = function (e) { 
     e.preventDefault(); 
     var formEl = document.forms[0].age; 
     if (formEl.checked) { 
      alert("Sorry, you must be over 18 to enter...Please check the over 18 box to proceed"); 
     } 
     e.stopPropagation(); 
    } 

實例化功能,像往常一樣,如:

var button = document.getElementById('submit'); 
    button.addEventListener('click', validateForm, false); 

Fiddle