表单数据未通过

时间:2012-07-25 23:15:15

标签: php javascript html forms

我正在使用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']
?>

无论我使用什么索引,我都会得到“Undefined index:line 2”。我做错了什么?

编辑:所以我无法使用我需要id的{​​{1}}属性?无论如何都要阻止编码冗余,因为所有name的值都与相应的name相同?

5 个答案:

答案 0 :(得分:6)

您的字段中需要name属性

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

$_POST在字段中查找name属性以捕获字段值,而不是id

答案 1 :(得分:4)

您的输入需要元素的名称。

如:

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

Php获取表单数据,而不是ID。

答案 2 :(得分:2)

您忘记了name输入:

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

答案 3 :(得分: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 :(得分:2)

所以就像Vitor Braga所说你的输入需要元素的名称,但如果你使用PHP在提交中使用表单的值,你只需要这个,如果你使用javascript来验证就像你说你正在做的那样你可以得到这样的价值:

的document.getElementById( “数字”)。值