2012-03-20 109 views
1

這裏是我的Javascript formvalidator功能:爲什麼我的表單仍然提交時,我的JavaScript函數返回false?

function companyName() { 
    var companyName = document.forms["SRinfo"]["companyName"].value; 
    if (companyName == ""){ 
    return false; 
    } else { 
    return true; 
    } 
} 

function companyAdd() { 
    var companyAdd1 = document.forms["SRinfo"]["companyAdd1"].value; 
    if (companyAdd1 == ""){ 
    return false; 
    } else { 
    return true; 
    } 
} 

function companyCity() { 
    var companyCity = document.forms["SRinfo"]["companyCity"].value; 
    if (companyCity == ""){ 
    return false; 
    } else { 
    return true; 
    } 
} 

function companyZip() { 
    var companyZip = document.forms["SRinfo"]["companyZip"].value; 
    if (companyZip == ""){ 
    return false; 
    } else { 
    return true; 
    } 
} 

function enteredByName() { 
    var enteredByName = document.forms["SRinfo"]["enteredByName"].value; 
    if (enteredByName == ""){ 
    return false; 
    } else { 
    return true; 
    } 
} 

function dayPhArea() { 
    var dayPhArea = document.forms["SRinfo"]["dayPhArea"].value; 
    if (dayPhArea == ""){ 
    return false; 
    } 
} 

function dayPhPre() { 
    var dayPhPre = document.forms["SRinfo"]["dayPhPre"].value; 
    if (dayPhPre == ""){ 
    return false; 
    } else { 
    return true; 
    } 
} 

function dayPhSub() { 
    var dayPhSub = document.forms["SRinfo"]["dayPhSub"].value; 
    if (companyAdd1 == ""){ 
    return false; 
    } else { 
    return true; 
    } 
} 

function validateForm() { 
     if (companyName() && companyAdd() && companyCity() && companyZip() && enteredByName() && dayPhArea() && dayPhPre() && dayPhSub()) { 
      return true;   

     } else { 
      window.alert("Please make sure that all required fields are completed."); 
      document.getElementByID("companyName").className = "reqInvalid"; 
      companyName.focus(); 
      return false; 
     } 
    } 

這裏是我所有的包括,以防萬一用另一個衝突(我使用jQuery的爲他們的切換()):

<script type="text/javascript" src="formvalidator.js"></script> 
<script type="text/javascript" src="autoTab.js"></script> 
<?php 
require_once('mobile_device_detect.php'); 
include_once('../db/serviceDBconnector.php'); 
$mobile = mobile_device_detect(); 

if ($mobile) { 
     header("Location: ../mobile/service/index.php"); 
    if ($_GET['promo']) { 
     header("Location: ../mobile/service/index.php?promo=".$_GET['promo']); 
    } 
} 

?> 
<script src="http://code.jquery.com/jquery-1.7.1.js"></script> 

這裏是我的表單標籤,功能返回onSubmit:

<form method="POST" action="index.php" name="SRinfo" onsubmit="return validateForm();"> 

驗證工程pe完美的是,我測試了所有字段,並且不斷收到相應的警報,但是在警報提交後,表單被提交到mysql並作爲電子郵件發送。以下是我提交POST數據的代碼。

if($_SERVER['REQUEST_METHOD']=='POST') { 
// Here I submit to Mysql database and email form submission using php mail() 
+0

你也應該驗證表單服務器端 – mrtsherman 2012-03-20 16:49:57

回答

5

這似乎對我來說,此行很可能吹起來:

companyName.focus(); 

我看到companyName唯一定義的功能。功能上不能撥打focus

這會爆炸,所以return false永遠不會到達。

+0

良好的調用,該行是從我以前版本的formValidator,這是第一個版本確實工作,但我的老闆不喜歡多個警報的遺留下來。當我刪除該行時,它不起作用,但我刪除了兩個'document.getElementByID(「companyName」).className =「reqInvalid」;'&'companyName.focus();'它完美地工作。謝謝! – jnthnjns 2012-03-20 16:57:08

0

我會註釋掉驗證部分中的所有代碼,並簡單地返回false。如果這阻止了發佈的表單,那麼在執行驗證的實際代碼中存在錯誤。一次添加一個部件,直到找到錯誤。

我的猜測與James建議您將焦點放在函數'companyName'上相同。上面的代碼似乎試圖從文檔中獲取具有相同名稱的元素,但您並未將其分配給變量,以便您可以將焦點放在該變量上。

相關問題