2017-08-01 38 views
1

我是網頁設計的初學者,這是一個項目,我被授予但無論我做什麼表單都不會提交。即使所有的輸入都是正確的,但我點擊提交後仍然無法執行任何操作。任何幫助表示讚賞。我搜索了一個小時,但沒有任何工作。即使所有的字段被填充和檢查,表格也不會提交

這只是一個簡單的窗體結構。我的主要目標是驗證代碼併發送到PHP腳本。

<html> 
    <head> 
     <title>Form</title> 
     <style> 
      h1,h2 { 
       color:red; 
       text-align:center; 
      } 
      #form { 
       padding-left: 80px; 
      } 
      .fullname{ 
       //border:1px solid; 
       padding:0 0 0 80px; 
       margin:0; 
       color:red; 
       font-style:italic; 
       font-size:13px; 
       white-space:nowrap; 
       //float:left; 
       //visibility:hidden; 
      } 
      .N { 
       //border-color:red; 
       border-radius:5px; 
       //text-shadow:0 0 2px #ddd; 
      } 
     </style> 
    </head> 
    <body> 
     <h1>Welcome</h1> 
     <!--onSubmit="return !!(validateFName() & validateLName() & validateGender() & validateMonth() & validateDay() & validateYear());" --> 
     <form id="form" name="myForm" action="new1.php" onSubmit="return validateName()" > 
      First Name:<input class="N" type="text" name="fname" value="enter name 
       here" /><br> 
      <div id="errorFName" class="fullname"></div> 
      Last Name:<input class="N" type="text" name="lname" value="enter name here"/><br> 
      <div id="errorLName" class="fullname"></div> 
      Gender:<br> 
      <input type="radio" name="sex" value="Male">Male 
      <input type="radio" name="sex" value="Female">Female<br> 
      <div id="gender" class="fullname" style="padding:0 0 0 15px;"></div> 
      Date Of Birth:<br> 
      Month: 
      <select name="month"> 
       <option value="0">--Select Month--</option> 
       <option value="1">Janaury</option> 
       <option value="2">February</option> 
       <option value="3">March</option> 
       <option value="4">April</option> 
       <option value="5">May</option> 
       <option value="6">June</option> 
       <option value="7">July</option> 
       <option value="8">August</option> 
       <option value="9">September</option> 
       <option value="10">October</option> 
       <option value="11">November</option> 
       <option value="12">December</option> 
      </select> 
      &emsp; 
      Day: 
      <select name="day"> 
       <option value='No'>--Select Day--</option> 
       <option value='Mo'>Monday</option> 
       <option value='tu'>Tuesday</option> 
       <option value='we'>Wednesday</option> 
       <option value='th'>Thursday</option> 
       <option value='fr'>Friday</option> 
       <option value='sa'>Saturday</option> 
       <option value='su'>Sunday</option> 
      </select> 
      &emsp; 
      Year: 
      <select name="year"> 
       <script> 
        for(var i = 2017; i >= 1900; i--){ 
        document.write('<option value="'+i+'">'+i+'</option>'); 
        } 
       </script> 
      </select> 
      <br> 
      <span id="month_div" class="fullname" style="padding:0 0 0 60px;"></span> 
      <span id="day_div" class="fullname" style="padding:0 0 0 80px;"></span> 
      <span id="year_div" class="fullname" style="padding:0 0 0 65px;"></span><br> 
      <input type="submit" value="Submit"> 
     </form> 

     <script> 
      var firstName = document.forms.myForm.fname; 
      var lastName = document.forms.myForm.lname; 
      var gender = document.forms.myForm.sex; 
      var months = document.forms.myForm.month; 
      var days = document.forms.myForm.day; 
      var years = document.forms.myForm.year; 

      var fname_error = document.getElementById("errorFName"); 
      var lname_error = document.getElementById("errorLName"); 
      var gender_error = document.getElementById("gender"); 
      var month_error = document.getElementById("month_div"); 
      var day_error = document.getElementById("day_div"); 
      var year_error = document.getElementById("year_div"); 


      function validateName() { 
       var validity = true; 
       validity &= validateFName(); 
       validity &= validateLName(); 
       validity &= validateGender(); 
       validity &= validateMonth(); 
       validity &= validateDay(); 
       validity &= validateYear(); 
       return validity; 
      } 

      function validateFName() { 
       if (firstName.value === "enter name here") { 
        firstName.value = ""; 
        firstName.style.border = "1px solid red"; 
        fname_error.textContent = "Fill User Name"; 
        return false; 
       } 
       if (firstName.value !== "enter name here") { 
        // fname_error.innerHTML = ""; 
        return true; 
       } 
      } 

      function validateLName() { 
       if (lastName.value === "enter name here") { 
        lastName.value = ""; 
        lastName.style.border = "1px solid red"; 
        lname_error.textContent = "Fill User Name"; 
        return false; 
       } 
      } 

      function validateGender() { 
       if (gender[0].checked || gender[1].checked) { 
        gender_error.innerHTML = ""; 
        return true; 
       } else { 
        gender_error.textContent = "select your sex"; 
        return false; 
       } 
      } 

      function validateMonth() { 
       if (months.value !== "0") { 
        month_error.innerHTML = ""; 
        day_error.style.padding = "0 0 0 175px"; 
        return true; 
       } else { 
        month_error.textContent = "select the month"; 
        return false; 
       } 
      } 

      function validateDay() { 
       if (days.value !== "No") { 
        day_error.innerHTML = ""; 
        year_error.style.padding = "0 0 0 150px"; 
        return true; 
       } else { 
        day_error.textContent = "select the day"; 
        //day_error.style.padding = "0 0 0 80px"; 
        return false; 
       } 
      } 

      function validateYear() { 
       if (years.value !== "2017") { 
        year_error.innerHTML = ""; 
        return true; 
       } else { 
        year_error.textContent = "select the year"; 
        return false; 
       } 
      } 
     </script> 

    </body> 
</html> 

編輯:只是試圖用這種方式進行調試,而且即使返回值爲true,它似乎也只是通過代碼。

的放出來總是「它不工作」

function validateName() { 
    var validity = true; 
    validity &= validateFName(); 
    if (validity === true) 
     alert("it works FName"); 
    validity &= validateLName(); 
    if (validity === true) 
     alert("it works LName"); 
    validity &= validateGender(); 
    if (validity === true) 
     alert("it works Gender"); 
    validity &= validateMonth(); 
    if (validity === true) 
     alert("it works Month"); 
    validity &= validateDay(); 
    if (validity === true) 
     alert("it works Day"); 
    validity &= validateYear(); 
    alert("it works Year"); 
    if (validity === true) 
     return validity; 
    else 
     alert("it dosnt works"); 
} 

編輯2.我現在的問題是提交。它會提交表單而不驗證任何輸入。它應該說「請填寫字段」,但它只是去了PHP文件。

+2

你的控制檯給你任何錯誤? – Luca

+0

使用Chrome或FireFox在validateName函數中設置斷點並驗證該函數是否按預期返回。您可能只想添加簡單的警報或控制檯消息來驗證函數正在被調用。 –

+0

不,沒有@LucaKiebel –

回答

0

檢查這個代碼,希望它會工作,我更新了一些代碼,並使用佔位符所以沒有必要使用支票使用的文字和更新& =到=和相關的一些代碼,希望這將現在的工作

<html> 
<head><title>Form</title> 
    <style> 
     h1, h2 { 
      color: red; 
      text-align: center; 
     } 

     #form { 
      padding-left: 80px; 
     } 

     .fullname { 
     // border: 1 px solid; 
      padding: 0 0 0 80px; 
      margin: 0; 
      color: red; 
      font-style: italic; 
      font-size: 13px; 
      white-space: nowrap; 
     // float: left; 
     // visibility: hidden; 
     } 

     .N { 
     // border-color: red; 
      border-radius: 5px; 
     // text-shadow: 0 0 2 px #ddd; 
     } 
    </style> 
</head> 
<body> 
<h1>Welcome</h1> 
<!--onSubmit="return !!(validateFName() & validateLName() & validateGender() & validateMonth() & validateDay() & validateYear());" --> 
<form id="form" name="myForm" action="" method="post" onSubmit="return validateName()"> 
    First Name:<input class="N" type="text" name="fname" value="" placeholder="enter namehere"/><br> 

    <div id="errorFName" class="fullname"></div> 
    Last Name:<input class="N" type="text" name="lname" value="" placeholder="enter name here"/><br> 

    <div id="errorLName" class="fullname"></div> 
    Gender:<br> 
    <input type="radio" name="sex" value="Male">Male 
    <input type="radio" name="sex" value="Female">Female<br> 

    <div id="gender" class="fullname" style="padding:0 0 0 15px;"></div> 
    Date Of Birth:<br> 
    Month: 
    <select name="month"> 
     <option value="0">--Select Month--</option> 
     <option value="1">Janaury</option> 
     <option value="2">February</option> 
     <option value="3">March</option> 
     <option value="4">April</option> 
     <option value="5">May</option> 
     <option value="6">June</option> 
     <option value="7">July</option> 
     <option value="8">August</option> 
     <option value="9">September</option> 
     <option value="10">October</option> 
     <option value="11">November</option> 
     <option value="12">December</option> 
    </select>&emsp; 
    Day: 
    <select name="day"> 
     <option value='No'>--Select Day--</option> 
     <option value='Mo'>Monday</option> 
     <option value='tu'>Tuesday</option> 
     <option value='we'>Wednesday</option> 
     <option value='th'>Thursday</option> 
     <option value='fr'>Friday</option> 
     <option value='sa'>Saturday</option> 
     <option value='su'>Sunday</option> 
    </select>&emsp; 
    Year: 
    <select name="year"> 
     <script> 
      for (var i = 2017; i >= 1900; i--) { 
       document.write('<option value="' + i + '">' + i + '</option>'); 
      } 
     </script> 
    </select><br> 
    <span id="month_div" class="fullname" style="padding:0 0 0 60px;"></span> 
    <span id="day_div" class="fullname" style="padding:0 0 0 80px;"></span> 
    <span id="year_div" class="fullname" style="padding:0 0 0 65px;"></span><br> 
    <input type="submit" value="Submit"> 
</form> 
<script> 
    var firstName = document.forms.myForm.fname; 
var lastName = document.forms.myForm.lname; 
var gender = document.forms.myForm.sex; 
var months = document.forms.myForm.month; 
var days = document.forms.myForm.day; 
var years = document.forms.myForm.year; 

var fname_error = document.getElementById("errorFName"); 
var lname_error = document.getElementById("errorLName"); 
var gender_error = document.getElementById("gender"); 
var month_error = document.getElementById("month_div"); 
var day_error = document.getElementById("day_div"); 
var year_error = document.getElementById("year_div"); 


function validateName() { 
    validity = true; 
    validity = validateFName(); 
    validity = validateLName(); 
    validity = validateGender(); 
    validity = validateMonth(); 
    validity = validateDay(); 
    validity = validateYear(); 
    // return validity; 
    if(validateFName() && validateLName() && validateGender() && validateMonth() && validateYear()){ 
     document.getElementById("form").action = "http://localhost/new1.php"; 
    // change this url which your action 
     document.getElementById("form").submit(); 
    } else { 
     return false; 
    } 

} 
function validateFName() { 
    if (firstName.value == "") { 
     firstName.value = ""; 
     firstName.style.border = "1px solid red"; 
     fname_error.textContent = "Fill User Name"; 
     return false; 
    } else { 
     fname_error.textContent = ""; 
     firstName.style.border = "1px solid #fff"; 
     return true; 
    } 

} 
function validateLName() { 
    if (lastName.value == "") { 
     lastName.value = ""; 
     lastName.style.border = "1px solid red"; 
     lname_error.textContent = "Fill User Name"; 
     return false; 
    } else { 
     lname_error.textContent = ""; 
     lastName.style.border = "1px solid #fff"; 
     return true; 
    } 
} 
function validateGender() { 
    if (gender[0].checked || gender[1].checked) { 
     gender_error.innerHTML = ""; 
     return true; 
    } 
    else { 
     gender_error.textContent = "select your sex"; 
     return false; 
    } 
} 
function validateMonth() { 
    if (months.value !== "0") { 
     month_error.innerHTML = ""; 
     day_error.style.padding = "0 0 0 175px"; 
     return true; 
    } 
    else { 
     month_error.textContent = "select the month"; 
     return false; 
    } 
} 
function validateDay() { 
    if (days.value !== "No") { 
     day_error.innerHTML = ""; 
     year_error.style.padding = "0 0 0 150px"; 
     return true; 
    } 
    else { 
     day_error.textContent = "select the day"; 
     //day_error.style.padding = "0 0 0 80px"; 
     return false; 
    } 
} 
function validateYear() { 
    if (years.value !== "2017") { 
     year_error.innerHTML = ""; 
     return true; 
    } 
    else { 
     year_error.textContent = "select the year"; 
     return false; 
    } 
} 
</script> 
</body> 
</html> 
0

使用

var firstName = document.forms.myForm.fname.value; 

你已經忘了字段名稱後增加價值。

+0

它不會有什麼不同,因爲我使用它像其他代碼 –

+0

「firstName.value」從'&='替換爲'='(刪除&) 它將false轉換爲0. –

+0

非常感謝你解決了檢查問題,但仍然,每一件事情都是真實的,表格不會提交。 @Cppi Khatri –

相關問題