使用 html 表单和 php 验证空白文本区域或是不是存在默认值
Posted
技术标签:
【中文标题】使用 html 表单和 php 验证空白文本区域或是不是存在默认值【英文标题】:Using html forms and php for validation on blank textarea or if default value is present使用 html 表单和 php 验证空白文本区域或是否存在默认值 【发布时间】:2011-08-06 20:55:04 【问题描述】:您好,我有一个表单,我正在尝试验证底部的文本区域。我想要它,所以如果存在默认值或者如果框为空,则会出错。这是我正在查看的表单的一部分:
<form id="form" method="post" action="email.php">
<p><label style="width: 400px; float: left; height: 20px" for="comments">Your enquiry details?</label>
<textarea style="width: 400px; height: 84px" id="comments" rows="1" cols="1"
onfocus="if (this.value == this.defaultValue) this.value = ''; "
name="comments">
e.g. There are 5 of us looking to hire either caravan for 7 nights on the dates above. Are we able to have BBQ's?
</textarea> </p>
All sections MUST be completed!<br />
<p class="submit">
<button type="reset">Reset</button>
<button name="send" type="submit">Submit</button> </p></fieldset> </form>
这是我的 PHP 页面的一部分:
$string_exp = ".";
if(!eregi($string_exp,$comments))
$error_message .= 'You did not leave a comment!.<br />';
如果 textarea 为空白,则错误会正常工作(因为我有正则表达式“。”所以他们可以将键盘上的任何东西用于他们的 cmets),但如果它仍然显示默认值,我也希望它出错“例如,我们中有 5 个人希望在上述日期租用大篷车 7 晚。我们可以烧烤吗?”
我该怎么做?
亲切的问候
【问题讨论】:
认真的吗?使用正则表达式检查字符串是否为空?简单测试if(!$comments)
【参考方案1】:
if(!$comments || $comments == 'There are 5 of us looking to hire either caravan for 7 nights on the dates above. Are we able to have BBQ's?')
如果可以仅在非 IE 浏览器中显示文本,您还可以使用 html5 占位符属性 (demo):
<textarea ... placeholder="here are 5 of us looking to hire either caravan for 7 nights on the dates above. Are we able to have BBQ's?"></textarea>
【讨论】:
非常感谢 Zirak!这对我有用,我会研究 preg_match。 实际上这在我的测试服务器上有效,但是当我将它放在实时服务器上时,由于某种原因它没有,相同的代码和所有内容。所以我改用了 ThiefMaster,也喜欢占位符部分:)【参考方案2】:扩展您的检查以包括您当前的检查以及字符串检查。
$default = "e.g. There are 5 of us looking to hire either caravan for 7 nights on the dates above. Are we able to have BBQ's?"
if (($comments == "") || ($comments == $default)))
$error_message .= 'You did not leave a comment!.<br />';
对于奖励积分,请使用$default
变量来填充您的模板,这样您就不必将它写在两个地方。
【讨论】:
【参考方案3】:首先,the eregi function 自 php 5.3 起已弃用。 preg_match 是要走的路!
其次,如果要测试是否输入了 no 值,为什么不比较...nothing? php 会将空字符串视为虚假值。
第三,假设你有价值,为什么不去比较呢?
if (!$comments || $comments === 'my default value')
$error_message .= 'You did not leave a comment!.<br />';
看看Boolean values上的php文档。
【讨论】:
【参考方案4】:我可能误会了。 但是,如果您想在服务器端(email.php)进行验证,您可以这样做:
$default_comment = "There are 5 of us looking to hire either caravan for 7 nights on the dates above. Are we able to have BBQ's?"
$comments = (string)$_POST['comments'];
if( empty($comments) || $comments == $default_comment )
$error_message .= 'You did not leave a comment!.<br />';
【讨论】:
以上是关于使用 html 表单和 php 验证空白文本区域或是不是存在默认值的主要内容,如果未能解决你的问题,请参考以下文章