2017-05-30 53 views
1

当我编写我的第一个HTML和PHP表单时,我被告知,即使通过发送变量发送表单,仍然可以看到用户的输入,这是非常好的。所以我的第一个形式看起来是这样的:表单中的默认值和用户输入

<input type="text" name="name" value="<?php echo $name; ?>" /> 

我进行检查,如果有什么用户输入,如果有不显示的错误:

if (!empty($name)) {      
    $flag_name = TRUE; 
} 
else { 
    echo "Please fill in your name"; 
    $flag_name = FALSE; 
} 

最近,我开始工作与JavaScript,我偶然发现了一个非常有用的代码片段,这使得有可能写入一个默认值的形式,当你点击它被清除。它看起来像这样,它很好用!

<input id="name" name="name" onblur="if (this.value=='') this.value='Name'" onfocus="if (this.value=='Name') this.value='';" type="text" value="Name" /> 

为了使它不可能为了人提交这些默认值,我改变了我的PHP检查,检查的默认值:

if (!empty($name) && $name != 'Name') {     
    $flag_name = TRUE; 
} 
else { 
    echo "Please fill in your name"; 
    $flag_name = FALSE; 
} 

我仍然不是很满意我的新形式。如果您尝试使用默认值提交,您会收到一条错误消息 - 很好。但那你必须再次填写一切

我想结合这与我第一次尝试,与变量之一。用户应该看到一个默认值,当他点击表单时会消失。在填补空白并点击提交之后,他们仍然应该能够看到他们写的内容。

这可能吗?

+8

查看输入的“占位符”属性;它基本上会自动执行该行为,不需要JavaScript –

+0

另外,花些时间研究jQuery验证来强制/验证用户输入可能是值得的。一旦提交,您就可以'回显'$ _POST'变量。 – JustBaron

+0

试试这个 –

回答

1

如果使用占位符属性就可以省略对您输入的JS-摆弄(1)。一旦将占位符文本与实际值分开,您也可以放弃PHP(2)中的值检查。之后,将提交的表单值输出回表单(3)是一件简单的事情。

<?php 
$name = ''; 
if (isset($_POST['name'])) // (2) 
{ 
    $name = $_POST['name']; 
    if (strlen(trim($_POST['name'])) > 0) 
    { 
    $flag_name=TRUE; 
    } 
    else 
    { 
    echo "Please fill in your name"; 
    $flag_name=FALSE; 
    } 
?> 
<form method="post"> 
    <!--       (1)            (3)--> 
    <input id="name" name="name" placeholder="Your name here!" type="text" value="<? echo $name; ?>" /> 
</form> 
1

你可以在你的HTML形式,满足您的要求

<input id="name" name="name" type="text" value="" placeholder="Name" /> 

希望这将有助于你不需要jQuery的功能也

,如果你想添加jQuery验证为其他检查,然后用html placeholder你可以这样做,但这个目的没有必要的jQuery

所以你可以使用这样的事情

<form action=""> 
    <input type="text" name="fname" placeholder="First name"><br> 
    <input type="text" name="lname" placeholder="Last name"><br> 
    <input type="submit" value="Submit"> 
</form> 

https://www.w3schools.com/tags/att_input_placeholder.asp