Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将占位符作为值传递给PHP的HTML输入标记_Php_Html_Forms - Fatal编程技术网

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

将占位符作为值传递给PHP的HTML输入标记,php,html,forms,Php,Html,Forms,我正在尝试在一个新的移动网站上实现“占位符”属性。遇到这样一个问题:如果用户将字段留空(显示占位符),则该占位符将作为字段值提交给PHP,供PHP接收并放置在数据库中。相反,它应该(我假设)发送一个空值。这会导致服务器端验证出现问题-接收的PHP脚本认为已提交合法值,而不是空值,这将向用户返回错误 我希望有一个快速解决这个问题 示例代码如下: <form action="somepage.php" method="post"> <input type="text" name=

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

我希望有一个快速解决这个问题

示例代码如下:

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

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

<input type="submit">

</form>
而不是:

$_POST['yourName'] = '';
后者是我希望它看到的

任何帮助都将不胜感激

*编辑**

下面是一个有问题的示例表单:


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

某些内容正在删除页面加载上的
占位符
属性文本(在多个输入上)

根据您的源代码,您正在调用两个不同的jQuery脚本。删除在结束标记附近找到的此项。此可能与基金会附带的占位符插件冲突

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

这应该像魅力一样工作,但我认为,因为它在手机上的东西是不同的

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


同时尝试将val=“”。

我无法重现您的错误。我使用Firefox25和26、Chrome31、IE11、Opera12.16和Safari5.1.7对它进行了测试。看一下规范,我不相信占位符是要提交的——所以您确实遇到了某种bug

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


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

在我自己的搜索中偶然发现了这一点,因此如果其他人正在寻找此问题的答案,请尝试以下方法:

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



通过在输入标记中添加“required”,用户必须在提交之前填写此字段。

占位符
是HTML5属性。您是否有正确的doctype集(即
)?目前还不是一个解决方案,但将来可能会有所帮助,现在肯定会有所帮助:在某个时候将
必需的
放入
中,例如
您是否可以提供代码来复制它?发布的HTML表单工作正常(尽管我只是在中使用了
YOURFORM
),但它的工作方式与您预期的一样,但它似乎是在经典的ASP(Aarghh!)…您是否包括任何用于占位符浏览器支持的Javascript?PHP如何知道占位符是哪个值?正如我所说的,由于它是一款手机,我不知道有什么问题(我们不知道浏览器),我们没有剩下的代码来检查他是否使用HTML5,我说这不是最好的解决方案,它只是一个解决方案。PHP不应该知道占位符中有什么,但看看这个“PHP看到:$_POST['yourName']='在这里输入你的名字';”他说了。所以我建议检查它作为一个解决方案。请先阅读问题。它不是。想象不同的文件,一个表单和一个PHP解释它。PHP如何知道哪个值是占位符(除非您在默认情况下在两个方面都设置它,这不是一个很好的解决方案,但是一个丑陋的解决方案,因为可能会有一个“清理”JS函数,所以这里甚至不需要它)?我明白你想说的,很抱歉,这是一个丑陋的工作区,我会尝试为他提供一个好的js函数。我以为你说的占位符的第一个值,我像waa?:Pjs函数不需要这个…!?这不是一个answer@kingkero我用了我的答案,我想现在应该是一个有效的答案了这可能是一个争论的问题。但既然你在假设和/或提问,我个人会把它作为一个评论发布。答案应该是这样的-答案。即使你是对的,怎么解决这个问题呢?现在解决这个问题的方法是答案;)你在玩“假设什么”男人?哈哈,根据给出的代码来回答。不是你认为存在的神秘脚本。这也不是一个真正的答案——更多的是一个评论。相反,你应该询问OP是否使用了第三方脚本,进行故障排除,并根据此提交一个答案。@MikeBarwick OP没有给出完整的HTML文件,所以我如何确定他不是我包括一些javascript以支持较旧的浏览器?这是这种行为最明显的原因。奇怪的是,这是我发布的一个示例表单,演示了这个问题。期待你的反馈:那个神秘的脚本怎么样?;)+1虽然是答案。嘿-我从来没有排除lol。我只是根据我得到的答案来回答(re:$\u POST data),这与问题毫无关系-很明显!您已经锁定了它。:d发现这一直都是问题所在。删除脚本解决了问题。谢谢!!!!!OP的问题是关于已传递到服务器端语言的
占位符
// 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
    });
}
<input type="text" name="yourName" placeholder="Enter your name here" required>