2012-04-22 251 views
0

该复选框的验证不起作用。它不会给出任何错误。你能帮我解决吗?我怎样才能在一个警报而不是一个一个地结合错误?javascript复选框验证

感谢您的任何帮助。

HTML代码:

<form class="contact_form" action="" method="post" name="contact_form" onsubmit="returnonFormSubmit(this)"> 
<li> 
<label for="First Name">First Name:</label> 
<input type="text" name="visitor_name" /><br /> 
</li> 

<li> 
<label for="condition">I agree with the terms and conditions.</label> 
<input type="checkbox" name="lan" /><br /> 
</li> 

<li> 
       <label for="Male">Male:</label> 
      <input type="radio" name="gender" value="m" /> &nbsp; Female:<input type="radio" name="gender" value="f" /><br /> 
       </li> 
       <li> 
       <label for="National Rating">National Rating:</label> 
       <select name="make"> 
       <option selected>-- SELECT --</option> 
       <option> Below 1200 </option> 
       <option> 1200 - 1500 </option> 
       <option> 1500 - 1800 </option> 
       <option> 1800 - 2100 </option> 
       <option> Above 2100 </option> 
       </select><br /> 
       </li> 

<li> 
<button class="submit" type="submit">Submit</button> 
</li> 
    <div id="error_message" style="color:#ff0000;"></div> 

javascript代码:

function onFormSubmit(form_element) 
{ 
    var checked = 0; 
    var letters = /^[a-zA-Z]+$/; 

if (form_element.visitor_name.value.match(letters)) 
    { 
      true; 
      } 
    else 
      { 
    alert("Please enter a valid first name. For example; John."); 
    false; 
    } 
     if (form_element.lan.checked == false) 
      { 
      alert("Please accept the terms and conditions"); 
      false; 
      } 
if (form_element.gender[0].checked == false && form_element.gender[1].checked == false) 
    { 
    alert("Please select a gender."); 
    false; 
    } 
    if (form_element.make.selectedIndex == 0) 
      { 
      alert("Please select your rating interval."); 
      form_element.make.focus(); 
      false; 
      } 
    return true; 
} 
+0

你需要使用'返回X;'(不是简单的'X;'),你有一个错字上'的onsubmit = “returnonFormSubmit(本)”' – ajax333221 2012-04-22 14:34:31

回答

1

您应该连接变量中的错误消息。

function onFormSubmit(form_element) 
{ 
    var checked = 0; 
    var letters = /^[a-zA-Z]+$/; 
    var errorMessage = ""; 
    if (!form_element.visitor_name.value.match(letters)) 
    { 
     errorMessage += "Please enter a valid first name. For example; John.\n"; 
    } 
    if (form_element.lan.checked == false) 
    { 
     errorMessage += "Please accept the terms and conditions\n"; 
    } 
    if (errorMessage != "") 
    { 
     alert(errorMessage); 
     return false;   
    } 
    return true; 
}​ 
1

你有onsubmit="returnonFormSubmit(this)"一个错字。它应该是

onsubmit="return onFormSubmit(this)" 

在控制台打开的情况下运行此操作会为您提供有价值的错误/警告。试用Chrome的开发工具,Firefox的Firebug或类似软件。

要将错误合并为一个错误,您可以从空字符串msg = ''开始,如果出现错误,可将其附加到该错误。然后在函数底部alert(msg),如果非空则返回false,否则返回true。

+0

它的onsubmit =“返回onFormSubmit (这个)”。在这里复制时,我犯了一个错误。谢谢。 – pepsicode 2012-04-22 14:20:13

+0

但它仍然没有给出任何错误。 – pepsicode 2012-04-22 14:20:44

+0

开发者工具或Firebug说什么?也许你的代码中有另一个语法错误。 – Kleist 2012-04-22 15:16:59

1

修复了returnonFormSubmit(this)中的打印错误后,它可以在Chrome和Firefox中使用。

(顺便说一句:你忘了回报)

要结合警报我会用一个数组。 例子:

function onFormSubmit(form_element) 
{ 
    var checked = 0; 
    var letters = /^[a-zA-Z]+$/; 

    var alerts = new Array(); 

    if (!form_element.visitor_name.value.match(letters)) 
     alerts.push("Please enter a valid first name. For example; John."); 

    if (!form_element.lan.checked) 
     alerts.push("Please accept the terms and conditions"); 

    if (alerts.length == 0) { 
     return true; 
    } 

    alert(alerts.join("\n")); 

    return false; 
} 
+0

我编辑了我的问题。你能检查一下吗?我感谢您的帮助。 – pepsicode 2012-04-22 14:45:27