1

我想验证我的表单。我的代码点火器视图中有一个表单验证 javascript 代码,但它无法正常工作,并且仍然在没有任何验证的情况下将值发送到下一页。你能告诉我我在哪里犯了错误以及为什么会这样吗?

代码:

<form method="get" action="/calculator/stage_two" name="calculate" id="calculate" onsubmit="return validateForm();">
    <div class="calc_instruction">
        <input type="text" name="property_number" placeholder="No/Name" id = "property_number" class="stage_one_box" />
        <input type="text"  name="postcode" placeholder="Postcode" id = "postcode" class="stage_one_box" />
    </div>
    <input type = "image" name = "submit_calculator" id = "submit_calculator" value="Go" src = "/images/next_button.png" />
</form>

Javascript函数:

<script type="text/javascript">
    function validateForm() {
        var postcode=document.forms["calculate"]["postcode"].value;
        if (postcode==null || postcode=="") {
            alert("Please enter the postcode to give you more accurate results");
            document.forms["calculate"]["postcode"].focus();
            return false;
        }
</script>
4

7 回答 7

5

您缺少一个结束括号。验证码中的任何错误都会返回一个非假值并允许提交

这是使用表单访问的规范方式:

<form method="get" action="/calculator/stage_two" name="calculate" 
  id="calculate"  onsubmit="return validateForm(this);">
  <div class="calc_instruction">
    <input type="text" name="property_number" placeholder="No/Name" id = "property_number" class="stage_one_box" />
    <input type="text"  name="postcode" placeholder="Postcode" 
      id = "postcode" class="stage_one_box" />
  </div>

    <input type = "image" name = "submit_calculator" id="submit_calculator" src="/images/next_button.png" />
</form>


<script type="text/javascript">
function validateForm(theForm) {
  var postcode=theForm.postcode;

  if (postcode.value=="")  { // cannot be null or undefined if value="" on field
    alert("Please enter the postcode to give you more accurate results");
    postcode.focus();
    return false;
  }
  return true; // allow submit
}
</script>
于 2012-12-19T09:34:43.837 回答
4

似乎您在函数末尾缺少右括号“ } ”。

<script type="text/javascript">
function validateForm() {

    var postcode=document.forms["calculate"]["postcode"].value;
    if (postcode==null || postcode=="")
    {
        alert("Please enter the postcode to give you more accurate results");
        document.forms["calculate"]["postcode"].focus();
         return false;
    }
} // <-- here 
</script>
于 2012-12-19T09:32:15.580 回答
2

请为函数添加端括号

<script type="text/javascript">
function validateForm()
 {
  var postcode=document.forms["calculate"]["postcode"].value;
  if (postcode==null || postcode=="")
  {
   alert("Please enter the postcode to give you more accurate results");
   document.forms["calculate"]["postcode"].focus();
    return false;
  }
 }
 </script>
于 2012-12-19T09:33:15.020 回答
1

尝试在此处插入调试器并尝试 go throw 方法

<script type="text/javascript">
 function validateForm() {
     debugger;
     var postcode=document.forms["calculate"]["postcode"].value;
     if (postcode==null || postcode=="")
     {
       alert("Please enter the postcode to give you more accurate results");
       document.forms["calculate"]["postcode"].focus();
       return false;
     }

于 2012-12-19T09:30:41.910 回答
1

在您的 javascript 函数中缺少右括号

请使用这个

在您的 javascript 右大括号中丢失

<script type="text/javascript">
 function validateForm()
 {

   var postcode=document.forms["calculate"]["postcode"].value;
   if (postcode==null || postcode=="")
    {
    alert("Please enter the postcode to give you more accurate results");
    document.forms["calculate"]["postcode"].focus();
     return false;
    }
}
   </script>
于 2012-12-19T09:32:30.337 回答
1

试试这条线

var postcode=document.getElementById("postcode").value;

代替

var postcode=document.forms["calculate"]["postcode"].value;

postcode==undefined

代替

postcode==null

因为function validateForm() {你错过了结束}

于 2012-12-19T09:32:56.907 回答
0

在您发布的代码中,您的 validateForm() 函数缺少右括号,因此假设这是您的实际代码,发生的情况是您在提交时收到 JavaScript 错误,这导致浏览器仅发布表单。

于 2012-12-19T09:32:46.983 回答