我试图在HMTL联系表单中使用javascript,在表单中显示文本,直到鼠标单击其中一个。然而,我的PHP似乎仍然认为在其唯一的javascript而不是物理HTML的字段中有文本。有人可以帮我解决这个问题吗?
Javascript / HTML表单
<form method="post" action="sendEmail.php">
<input type="text" name="name" id="name" onfocus="if (this.value == 'Your Name')
this.value = '';" onblur="if (this.value == '') this.value = 'Your Name';" maxlength="30"
value="Your Name" />
<input type="text" name="email" id="email" onfocus="if (this.value == 'Your Email')
this.value = '';" onblur="if (this.value == '') this.value = 'Your Email';" maxlength="30"
value="Your Email" />
<br /><br />
<textarea name="message" id="comments" value="Enter Your Message Here..." cols="60" rows="5"
onfocus="if (this.value == 'Enter Your Message Here...') this.value = '';"
onblur="if (this.value == '') this.value = 'Enter Your Message Here...';" >Enter Your Message Here...</textarea>
</form>
PHP
if (strlen($name) < 2) {
$error['name'] = "Please enter your name";
}
if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {
$error['email'] = "Please enter a valid email address";
}
if (strlen($comments) < 5) {
$error['comments'] = "Messages must be longer then 5 characters";
}
答案 0 :(得分:0)
然而,我的PHP似乎仍然认为在其唯一的javascript而不是物理HTML的字段中有文本
JavaScript仍会影响“物理HTML”。如果您使用JavaScript设置值,PHP将在提交时看到它。您可能需要查看HTML5的placeholder
属性(以及在旧版浏览器上模拟其功能的JavaScript库)。
答案 1 :(得分:0)
您添加或删除数据的JavaScript,但它会更改<input>
的值。 value
是提交表单时浏览器通过网络发送的内容。你可以:
placeholder
属性(并使用JavaScript填充程序为不支持该属性的旧浏览器添加支持),如@ceejayoz所示。<-- This is the best option
答案 2 :(得分:0)
您在HTML中有价值,因此即使没有JavaScript,也会发送这些值。当值为默认值时,禁止提交表单。对于文档就绪的此运行脚本,它记录每个输入的值作为其原始值,并附加焦点和模糊处理程序。将提交处理程序附加到表单,如果存在空值或原始值,则检查提交的值。