HTML输入标记将占位符作为值传递给PHP

时间:2013-12-10 19:06:51

标签: php html html5 forms

我正在尝试在新的移动网站上实施“占位符”属性。遇到问题,如果用户将该字段留空(显示占位符),则该占位符将作为PHP的字段值提交以接收并放置在数据库中。相反它应该(我假设)发送一个空值。这会导致服务器端验证出现问题 - 接收PHP脚本认为已提交合法值而不是空值,这会将错误返回给用户。

我希望能快速解决这个问题。

以下示例代码:

<form action="somepage.php" method="post">

<input type="text" name="yourName" placeholder="Enter your name here">

<input type="submit">

</form>

PHP看到:

$_POST['yourName'] = 'Enter your name here';

而不是:

$_POST['yourName'] = '';

后者是我想要的。

任何帮助都将非常感谢!!!

*编辑 * *

这是一个带有问题的示例表单:

https://www.badgleymischka.com/mobileTest.php

保留所有字段(在源中注意这些字段由占位符填充,而不是值)。单击“继续”按钮,您将看到带占位符值的_POST变量。

4 个答案:

答案 0 :(得分:4)

有些东西正在删除几个输入上页面加载的placeholder attr文本...

根据您的来源,您将调用两个不同的jQuery脚本。删除在结束<body />标记附近找到的内容。此 可能 与Foundation的包含的Placeholder插件冲突。

<script src="js/vendor/jquery.js"></script>

但这可能是罪魁祸首: 不确定你在这里写的是什么。但这看起来是个问题。请参阅line 17中的jquery.main.js。删除此全部。我不认为这是必要的,而且是冲突的。

// clear inputs on focus
function initInputs() {
    PlaceholderInput.replaceByOptions({
        // filter options
        clearInputs: true,
        clearTextareas: true,
        clearPasswords: true,
        skipClass: 'default',

        // input options
        wrapWithElement: false,
        showUntilTyping: false,
        getParentByClass: false,
        placeholderAttr: 'value' // <-- ding, ding! Prob the conflictor, if not this entire function
    });
}

答案 1 :(得分:0)

我无法重现您的错误。我使用Firefox 25和26,Chrome 31,IE 11,Opera 12.16和Safari 5.1.7进行了测试。看看规范我不相信占位符是打算提交的 - 所以你确实遇到了某种错误。

我能想到的这种行为的唯一原因是你在HTML中包含一个(java)脚本,针对不支持HTML5(和placeholder属性)的浏览器。这样的脚本可能会使用占位符填充空输入,但在提交表单之前无法删除它们。

如果确实如此,并且您的问题是由这样的脚本引起的,您可以通过修复脚本或完全删除它来解决它们。如果您选择修复脚本,则需要确保其值等于其占位符的输入重置为其默认值。

答案 2 :(得分:0)

在我自己的搜索中偶然发现了这一点,所以如果有其他人正在寻找答案,请试试这个:

<input type="text" name="yourName" placeholder="Enter your name here" required>

添加&#34; required&#34;在输入标记之前,用户必须在提交之前填写此字段。

答案 3 :(得分:-1)

这应该像魅力一样,但我认为因为它在移动设备上有所不同。

一个解决方案(我确定有一个更好的解决方案)是用if检查它。 因此,如果该值与占位符相同,则将其设为空白,然后继续进行验证。

也尝试把val =“”。