1

我正在使用 JavaScript 练习表单验证,但是当我尝试从它提交的页面中检索数据时,我无法获取它。

表单.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>

进程.php

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

无论我使用什么索引,我都会得到“未定义索引:第 2 行”。我究竟做错了什么?

编辑:所以我不能使用id我需要的属性name?由于所有names 的值都将与对应的值相同,因此是否有防止编码冗余的方法id

4

5 回答 5

6

您需要name在字段中添加属性

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

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

于 2012-07-25T23:17:22.067 回答
4

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

如:

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

Php 获取查看这些名称的表单数据,而不是 id。

于 2012-07-25T23:25:59.957 回答
2

你忘name了输入:

<input type="text" id="number" name="number" />
于 2012-07-25T23:17:46.610 回答
2

您需要为表单元素命名。

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

有趣的是,名称和 ID 共享相同的命名空间。如果您真的不需要这些 ID,请保留它们。在 validate 函数中,您始终可以使用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"/>
于 2012-07-25T23:18:10.317 回答
2

因此,就像 Vitor Braga 说的那样,您的输入需要元素的名称,但只有在您使用 PHP 在提交中处理表单的值时才需要这个,如果您使用 javascript 进行验证,就像您所说的那样,您可以获得像这样的值:

document.getElementById("number").value

于 2012-07-27T01:20:35.467 回答