0

我有一个简单的 php 和 jquery 联系表单(3 个字段:名称 - 电子邮件 - 消息),其输入字段编码如下:

<input type="text" name="contactName" id="contactName" value="<?php if(isset($_POST['contactName'])) echo $_POST['contactName'];?>" class="requiredField"/>

我希望这些字段具有默认值,而不是为空。同时我不相信使用占位符属性,因为它不是普遍支持的。

我发现这个 jquery 脚本可以很好地完成这项工作:

<script>
$(function() {
$( ".contact_form_field" )
.focus(function() {
var $this = $(this);
if (!$this.data('default')) {
$this.data('default', $this.val());
}
if ($this.val() == $this.data('default')) {
$this.val('')
.css('color', '#000');
}
})
.blur(function() {
var $this = $(this);
if ($this.val() == '') {
$(this).val($this.data('default'))
.css('color', '#666');
}
})
.css('color', '#666')
});
</script>

但是,为了使其工作,我必须将字段的值属性更改为所需的占位符文本:

<input type="text" name="contactName" id="contactName" value="Name" class="requiredField"/>

可以预见,这似乎会干扰表单操作,如果有空字段,应该阻止发送邮件:

if(trim($_POST['contactName']) === '') {
    $hasError = true;
} else {
    $name = trim($_POST['contactName']);
}

我以为我只需要将字符串更改为

if(trim($_POST['contactName']) === 'Name') { or

if(trim($_POST['contactName']) == 'Name') { or

但它似乎不起作用。即使该字段保持不变(不是空的,因为显示了“名称”文本),邮件也会被发送。

我不知道我做错了什么,任何输入(对不起双关语x_x)将不胜感激。

4

2 回答 2

0

创建一个包含所有默认值的数组并测试提交的值是否是默认值的一部分

$defaultValue = array('', 'Name');
if(in_array(trim($_POST['contactName']), $defaultValue) {
    $hasError = true;
} else {
    $name = trim($_POST['contactName']);
}
于 2013-08-03T22:12:38.433 回答
0

占位符今天已经可以使用了。但是,如果您仍然不信任它,您可以使用基于 onfocus 和 onblur 属性的旧解决方案。这是一个例子:

<input onfocus="if(this.value==='default value') this.value=''" onblur="if(this.value==='') this.value='default value'">
于 2013-08-03T22:16:10.643 回答