使用 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 验证空白文本区域或是不是存在默认值的主要内容,如果未能解决你的问题,请参考以下文章

angular js:无法验证文本区域

jQuery .html() 不会复制文本区域或输入的内容

文本区域的验证不起作用

双击文本区域或文本框时指定突出显示行为?

手势在文本区域或输入中开始时的触摸动作行为

jquery:在 keyup 上执行此操作,除非该人在文本区域或输入中