2014-12-05 83 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