2016-05-23 42 views
1

我一直在這個任務的一整天,似乎無法看到我要去哪裏錯了。觀看了一些YouTube視頻並搜索了幾天,緊隨其後,但仍然缺少一些東西。驗證聯繫我們表單使用Javascript,下拉菜單不返回false

我應該使用Javascript來驗證聯繫我們表單。下面是說明:

  1. 「名稱」,要麼「電話號碼」或「電子郵件」必須填寫或警報彈出(我有這個迄今爲止工作)
  2. 如果「其他」是從下拉菜單中選擇,用戶必須填寫「附加信息」文本區域,或警告將顯示
  3. 用戶必須檢查的日子至少一個與其聯繫,或警報

function checkForm() { 
 
    var name = document.getElementById("nameInput").value; 
 
    var email = document.getElementById("emailInput").value; 
 
    var phone = document.getElementById("phoneInput").value; 
 
    var inquirySelect = document.getElementById("dropdown").value; 
 
    var addInfoBox = document.getElementById("textInput").value; 
 

 
    if (name == "") { 
 
    alert("Name is required"); 
 
    return false; 
 
    } else if (email == "" && phone == "") { 
 
    alert("Please provide your email address or a phone number"); 
 
    return false; 
 
    } else if (inquirySelect == "Other" && addInfoBox == "") { 
 
    alert("Please add additional info"); 
 
    return false; 
 
    } 
 
}
<form name="contactForm" action="submission.html" method="POST" onsubmit="return checkForm()"> 
 
    <table id="form"> 
 
    <tr> 
 
     <td id="question">Name:</td> 
 
     <td id="answer"> 
 
     <input type="text" name="Name" id="nameInput"> 
 
     </td> 
 
     <td id="question"></td> 
 
    </tr> 
 
    <tr> 
 
     <td id="question">Email:</td> 
 
     <td id="answer"> 
 
     <input type="text" name="Email" id="emailInput"> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td id="question">Phone:</td> 
 
     <td id="answer"> 
 
     <input type="text" name="phoneNumber" id="phoneInput"> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td id="question">Reason for Inquiry:</td> 
 
     <td id="answer"> 
 
     <select name="reason" id="dropdown"> 
 
      <option value="Catering">Catering</option> 
 
      <option value="Private Party">Private Party</option> 
 
      <option value="Feedback">Feedback</option> 
 
      <option value="Other">Other</option> 
 
     </select> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td id="question">Additional Information:</td> 
 
     <td id="answer"> 
 
     <textarea name="additionalInfo" id="textInput"> 
 
     </textarea> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td id="question">Have you been to the restaurant?:</td> 
 
     <td id="answer"> 
 
     <input type="radio" name="answer" value="NO" checked>No 
 
     <input type="radio" name="answer" value="YES">Yes</td> 
 
    </tr> 
 
    <tr> 
 
     <td id="question">Best days to contact you:</td> 
 
     <td id="answer"> 
 
     <input type="checkbox" name="check" value="1">M 
 
     <input type="checkbox" name="check" value="2">T 
 
     <input type="checkbox" name="check" value="3">W 
 
     <input type="checkbox" name="check" value="4">Th 
 
     <input type="checkbox" name="check" value="5">F</td> 
 
    </tr> 
 
    <tr> 
 
     <td></td> 
 
     <td id="answer"> 
 
     <input type="submit" value="Send Request"> 
 
     </td> 
 
    </tr> 
 
    </table> 
 
</form>

到目前爲止,我能夠獲得第1步的工作。但是,我似乎無法讓第2步返回false,它將始終通過。

我還沒有開始工作的最後一步,但我知道我會使用for循環來檢查選中的值並返回false,如果沒有選中。希望我不會在這裏回到那裏。我感謝幫助在此,感謝標籤文本區域之間

回答

3

清空空間:

你的代碼是:

<textarea name="additionalInfo" id="textInput"> 
</textarea></td> 

變化是這樣的:我

<textarea name="additionalInfo" id="textInput"></textarea></td> 

工作。

+0

我沒有看到一個空的空間... – eric

+0

很好的抓住@ehsan。如果在HTML處有一個換行符,則該值不爲null,所以這就是警報沒有顯示的原因; 'document.getElementById(「textInput」)。value - > 「\t \t \t \t \t」' – yuriy636

+0

哦結束標記之前的空白空間。有用!謝謝! – eric