为什么我的JavaScript混淆了我的PHP

时间:2011-09-16 15:01:46

标签: php

我试图在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";
    }

3 个答案:

答案 0 :(得分:0)

  

然而,我的PHP似乎仍然认为在其唯一的javascript而不是物理HTML的字段中有文本

JavaScript仍会影响“物理HTML”。如果您使用JavaScript设置值,PHP将在提交时看到它。您可能需要查看HTML5的placeholder属性(以及在旧版浏览器上模拟其功能的JavaScript库)。

答案 1 :(得分:0)

您添加或删除数据的JavaScript,但它会更改<input>value是提交表单时浏览器通过网络发送的内容。你可以:

  • 向表单添加提交处理程序,以清除其中包含默认值的任何字段
  • 使用CSS + JavaScript在您的输入上移动标签,并在用户关注/模糊字段时隐藏/显示它们(完全跳过新的占位符属性并仅使用JavaScript模仿它。)
  • 完全删除您的JavaScript并使用新的placeholder属性(并使用JavaScript填充程序为不支持该属性的旧浏览器添加支持),如@ceejayoz所示。
    <-- This is the best option

答案 2 :(得分:0)

您在HTML中有价值,因此即使没有JavaScript,也会发送这些值。当值为默认值时,禁止提交表单。对于文档就绪的此运行脚本,它记录每个输入的值作为其原始值,并附加焦点和模糊处理程序。将提交处理程序附加到表单,如果存在空值或原始值,则检查提交的值。