2014-02-14 68 views
0

我已经研究出如何获得警戒框,但它似乎跳过了我的其他验证,它正在检查其他场地,等,任何想法,为什么它滑雪呢?它会真的帮助! 我是相当新的Javascript和HTML,以便你能不能解释一下,谢谢Validation not Javascript on Javascript

<html> 
<head> 
<title>Exam entry</title> 
<script language="javascript" type="text/javascript"> 
window.validateForm=function() { 
    var result = true; 
    var msg = ""; 
    if (document.ExamEntry.name.value == "") { 
     msg += "You must enter your name \n"; 
     document.ExamEntry.name.focus(); 
     document.getElementById('name').style.color = "red"; 
     //result = false; 
    } 
    if (document.ExamEntry.subject.value == "") { 
     msg += "You must enter the subject \n"; 
     document.ExamEntry.subject.focus(); 
     document.getElementById('subject').style.color = "red"; 
     //result = false; 
    } 
    if (document.ExamEntry.Exam_Number.value == "") { 
     msg += "You must enter the exam Number \n"; 
     document.ExamEntry.subject.focus(); 
     document.getElementById('Exam_Number').style.color = "red"; 
     //result = false; 
    } 
    if (document.ExamEntry.Exam_Number.value.length != 4) { 
     msg += "You must enter at least Four Numbers in the Exam Number \n"; 
     document.ExamEntry.Exam_Number.focus(); 
     document.getElementById('Exam_Number').style.color = "red"; 
     //result = false; 
    } 
    var Number = document.ExamEntry.Exam_Number.value 
    if (isNaN(document.ExamEntry.Exam_Number.value)) { 
     msg += "You must enter at least four numeric characters in the Exam Number feild \n"; 
     document.ExamEntry.Exam_Number.focus(); 
     document.getElementById('Exam_Number').style.color = "red"; 
     //result = false; 
    } 
    var checked = null; 
    var inputs = document.getElementsByName('Exam_Type'); 
    for (var i = 0; i < inputs.length; i++) { 
     if (!checked) { 
      checked = inputs[i]; 
     } 
    } 
    if (checked == null) { 
     msg += "Anything for now /n"; 

    } else { 
     return confirm('You have chosen ' + checked.value + ' is this correct?'); 
    } 
    if (msg == "") { 
     return result; 
    } { 
     alert(msg) 
     return false; 
    } 
} 
</script> 
</head> 
<body> 
<h1>Exam Entry Form</h1> 
<form name="ExamEntry" method="post" action="success.html"> 
<table width="50%" border="0"> 
<tr> 
<td id="name">Name</td> 
<td><input type="text" name="name" /></td> 
</tr> 
<tr> 
<td id="subject">Subject</td> 
<td><input type="text" name="subject" /></td> 
</tr> 
<tr> 
<td id="Exam_Number">Exam Number</td> 
<td><input type="text" name="Exam_Number"<font size="1">(Maximum characters: 4)</font> </td> 
</tr> 
<tr> 

<table><form action=""> 

<td><input type="radio" id="examtype" name="examtype" value="GCSE" /> : GCSE<br /> 
<td><input type="radio" id="examtype" name="examtype" value="A2" /> : A2<br /> 
<td><input type="radio" id="examtype" name="examtype" value="AS"/> : AS<br /> 
<td><input type="submit" name="Submit" value="Submit" onclick="return validateForm();" /></td> 
<td><input type="reset" name="Reset" value="Reset" /></td> 
</tr> 
</table> 
</form> 
</body> 
</html> 

and here is a jsfiddle

+4

我不确定你的问题是什么?我用铬和验证工作运行你的代码。你可以说得更详细点吗? – Uri

+1

你是什么意思跳过你的其他验证?它似乎在Firefox中为我生成正确的消息 –

+0

准备小提琴请..只需5秒,以cpy和粘贴您的代码..请 –

回答

0

您的for循环错误地检查单选按钮。

代码:

for (var i = 0; i < inputs.length; i++) { 
    if (inputs[i].checked) { 
     checked = inputs[i]; 
    } 
} 

请找工作小提琴这里http://jsfiddle.net/sDLV4/2/

2

变化:

var inputs = document.getElementsByName('Exam_Type');

var inputs = document.getElementsByName('examtype');

看来你选择了无线电元素的错误名称。

0

我改变了代码在这里,请检查...

请在这里找到工作小提琴

HTTP:/ /jsfiddle.net/sDLV4/3/

+0

http://jsfiddle.net/sDLV4/3/ – Rajanikumar

0

使用HTML5约束验证,可以删除大部分代码,请参阅下面的修订。除了错误的单选按钮组的名称所指出的于尔根·里默,你的代码有以下问题:

  1. 更好地利用HTML5 DOCTYPE声明,请参阅下面
  2. 而不是<script language="javascript" type="text/javascript">只使用<script>script元素没有language属性,并且type属性的默认值为“text/javascript”。
  3. 不要在window对象上定义验证函数,而应该定义为全局函数(如下所示),或者最好是作为名称空间对象的成员。
  4. 而不是设置窗体的name属性“ExamEntry”的,而不是设置其id属性和引用形式的变量一样没有形成良好的var examForm = document.forms["ExamEntry"];
  5. 你的HTML代码,因为在你的窗体的表,上线79 ,您可以使用另一个表单元素启动另一个表元素,而这两个元素都没有结束标记。
  6. 此外,我们最好使用CSS来表格布局,而不是表格。

在我的修订版本中,我在某些元素中使用样式表格的Pure CSS样式表和相应的class值。

有关一般约束验证和HTML5约束验证功能的更多信息,请参见tutorial

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<meta charset="UTF-8" /> 
<title>Exam entry</title> 
<link rel="stylesheet" href="http://yui.yahooapis.com/combo?pure/0.3.0/base-min.css&pure/0.3.0/forms-min.css" /> 
<script> 
function validateForm() { 
    var result = true; 
    var msg = ""; 
    var checked = null; 
    var examForm = document.forms['ExamEntry']; 
    var inputs = examForm.examtype; 

    for (var i = 0; i < inputs.length; i++) { 
    if (!checked) { 
     checked = inputs[i]; 
    } 
    } 
    if (!checked) { 
    msg += "Anything for now /n"; 
    } else { 
    return confirm('You have chosen ' + checked.value + ' is this correct?'); 
    } 
    if (msg == "") { 
    return result; 
    } else { 
    alert(msg) 
    return false; 
    } 
} 
</script> 
</head> 
<body> 
<h1>Exam Entry Form</h1> 
<form id="ExamEntry" class="pure-form pure-form-aligned" method="post" action="success.html"> 
    <div class="pure-control-group"> 
    <label for="exNo">Exam Number:</label> 
    <input id="exNo" name="Exam_Number" required="required" pattern="\d{4}" title="You must enter a 4-digit exam number" /> 
    </div> 
    <div class="pure-control-group"> 
    <label>Exam type:</label> 
    <label class="pure-radio"><input type="radio" name="examtype" value="GCSE" /> GCSE</label> 
    <label class="pure-radio"><input type="radio" name="examtype" value="A2" /> A2</label> 
    <label class="pure-radio"><input type="radio" name="examtype" value="AS" /> AS</label> 
    </div> 
    <div class="pure-controls"> 
    <button type="submit" class="pure-button pure-button-primary" onclick="return validateForm();">Submit</button> 
    <button type="reset" class="pure-button">Reset</button> 
    </div> 
</form> 
</body> 
</html> 
+0

因为它是课程,我们可以帮助我没有acsess到HTML 5在学校,我必须使用给定的代码,这使得它更难,任何想法? – Jamie