2012-07-25 33 views
1

我正在使用JavaScript進行表單驗證,但是當我嘗試從提交到的頁面檢索數據時,我無法獲取它。表單數據沒有通過

form.html

<body> 
    Hello.<br /> 
    <form onsubmit="return validate()" action="process.php" method="POST"> 
    Enter name: <input type="text" id="name" /><br /> 
    Enter phone number: <input type="text" id="number" /><br /> 
    Enter password: <input type="password" id="paswd" /><br /> 
    Is there anything else you would like to add: <input type="text" id="anything" /><br /> 
    <input type="submit" value="Check Form" /> 
    </form> 
</body> 

process.php

<?php 
echo 'Here: '.$_POST['number'] 
?> 

不管指數我用我得到 「未定義指數:2號線」。我究竟做錯了什麼?

編輯:所以我不能使用id屬性我需要name?因爲所有name的值將與相應的id相同,是否有防止編碼冗餘?

+0

我想張貼,當你錯過了一些代碼。 – Fluffeh 2012-07-25 23:17:25

回答

6

你需要在你的領域name屬性

<input type="text" id="number" name="number" /> 

$_POST將查找name屬性在現場捕捉到的字段值,而不是id

+0

這很奇怪。嘗試從表單標記中移除「onsubmit」,然後重試。 – asprin 2012-07-25 23:21:02

+0

當我說我嘗試過時,我撒謊。我已經忘記刷新頁面:( – Celeritas 2012-07-25 23:21:43

+0

大聲笑..所有的好? – asprin 2012-07-25 23:22:13

2

您忘記輸入的name

<input type="text" id="number" name="number" /> 
2

你需要給你的表單元素名稱。

<input type="password" id="paswd" name="paswd" /> 

有趣的是,名稱和ID共享相同的命名空間。如果你真的不需要這些ID,就讓它們成爲。在驗證函數中,您始終可以使用表單的elements對象訪問所有元素。

// called onsubmit 
var validate = function(e) { 
    if (this.elements["paswd"].value.length < 4) { 
     alert("password needs to have at least 4 characters"); 
     return false; 
    } 
    return true 
}; 

我通常是輸入型附加到我的ID從字段名

<label for="paswd-txt">Password: </label> 
<input type="text" name="paswd" id="paswd-txt" /> 

<label for="save-cb">Remember me: </label> 
<input type="checkbox" name="save" id="save-cb" value="1"/> 
4

你輸入需要的元素的名稱區分開來。

如:

<input type="text" id="number" name="number" /> 

php的獲取表單數據看這些名字,而不是IDS。

2

所以和Vitor Braga一樣,你的輸入需要元素的名字,但是如果你使用PHP來提交表單中的值,那麼你只需要這個,如果你使用javascript來驗證,就像你說的那樣praticing即可獲得價值是這樣的:

的document.getElementById(「數字」)值

+0

,但仍然沒有辦法解決名稱和ID?是的,我使用JS和PHP。 – Celeritas 2012-07-27 06:23:19