2014-02-09 230 views
0

我已經使用下面的代碼在我的網站中的其他地方,它的工作原理。對於我的生活,我不明白爲什麼它不起作用。問題:不斷拋出警報消息。檢查輸入字段是否爲空

我的HTML:

<form action="processForms.php" method="post" id="joinCommitteeForm" class="headForm shadow"> 
       <div class="outerBlue" style="background:white"> 
        <button type="button" id="cancelForm" class="button" title="Cancel">X</button> 
       <br><br> 
       <h3>Get involved&mdash;join a committee!</h3> 

       <?php if(empty($name)||empty($email)||empty($workPhone)){ 
       echo "<p class='red'>All fields must be filled out...</p><br><br>"; 
       }?> 
       <label for="name" style="width:40px">Name</label><input type="text" name="name" id="name"/><br> 
       <label for="email" style="width:40px" class="clear">Email</label><input type="text" name="email" id="email"/><br> 
       <label for="phone" style="width:40px;margin-bottom:20px" class="clear">Phone</label><input type="text" name="dayPhone" id="phone"/> 
       <hr> 
       <p class="clear">Please select a committee from the list below</p><br><br> 
       <select name="comName" id="comName" style="width:215px;margin-left:50px;float:left"> 
       <option value="">Select one...</option> 
       <?php 
       $sql = mysql_query("SELECT committeeName FROM committeeName ORDER BY committeeName"); 
       while ($row = mysql_fetch_assoc($sql)){ 
        echo "<option value = '".$row['committeeName']."'>".$row['committeeName']."</option>"; 
       } 
       echo "</select>";?> 
       <input type="submit" name="submitCommitteeInterest" class="button orange-button clear" value="Submit" style="margin-top:40px"/> 
       <div class="clear"></div> 
       <p class="small white" style="line-height:1em;margin-top:20px">NSGP never sells or gives away your personal information</p> 
      </div> 
      </form> 

我的JS:

$("#joinCommitteeForm").submit(function() { 
     if ($.trim($("#email").val()) === "" || $.trim($("#name").val()) === "") { 
      alert('All fields are required'); 
      return false; 
     } 
    }); 
+0

你在哪裏定義'$ name'和'$ email'? – Joeytje50

+0

爲什麼在這種情況下「===」而不是標準「==」? – Miro

+0

嘗試'if($ .trim($(「#email」).val())==「」|| $ .trim($(「#name」).val())==「」)' –

回答

0

我懷疑問題就在這裏,是你正在測試,如果$name$email是空的,但因爲你從來沒有定義它們根據PHP empty() docs,它們將始終爲空:「如果變量不存在或其值等於FALSE,則認爲該變量爲空。

爲了解決這個問題,你需要你的PHP的if語句改爲:

<?php if(empty($_POST['name'])||empty($_POST['email'])||empty($_POST['dayPhone'])){ 
    echo "<p class='red'>All fields must be filled out...</p><br><br>"; 
}?> 

而且,你的POST參數$workPhone似乎並不在你的形式存在。我已將其更改爲dayPhone

變量$_POST將包含來自提交表單的POST請求中的所有參數。

+0

OP似乎有問題_before_提交? –

+0

@SalmanA OP似乎對錶單驗證有問題。由於在通過JavaScript提交前有表單驗證*,並且在通過PHP提交後有驗證*,所以問題可能出在兩者上。在我看來,問題出在PHP上,因爲我沒有看到這些變量的定義,而未定義的變量放在'empty()'調用中時會返回'true'。這將是我對這個問題的唯一解釋。 – Joeytje50