【发布时间】:2012-07-30 18:47:32
【问题描述】:
您好,我遇到以下问题:
我有两个输入字段。一个是登录用户名,即另一个是密码。现在我想设置这两个字段的值。我的问题是密码。我打算实现如下:
HTML:
<input
type="text"
id="log_password"
name="log_password"
value="<?php echo ($log_password);?>"
onfocus="if(this.value=='Password')this.value='';this.type='password'"
onblur="if(this.value=='') this.value=this.defaultValue;"/>
PHP:
$log_password = "Password";
if(isset($_POST['submit'])){
$log_password = $_POST['log_password'];
if(empty($log_password)){
$errors['log_password'][]="No password given";
$_POST['log_password'] = "Password";
$log_password = $_POST['log_password'];
}
}
问题在于,这在提交表单之前一直有效。如果出现错误,由于type="text" 标签,密码再次可见。那么我该如何解决这个问题,如果有人可以帮助我,我真的很感激。非常感谢。
更新:
<div class="small2">
<?php if (!isset($errors['log_password'])):?>
<input
type="<?= $passwordVal == "" ? "text" : "password" ?>"
id="log_password" name="log_password"
value="<?php echo ($log_password);?>"
placeholder="Passwort"
onfocus="if(this.value=='Passwort')this.value=''"
onblur="if(this.value=='') this.value=this.defaultValue;"/>
<?php endif;?>
<?php if (isset($errors['log_password'])):?>
<input class="log-err"
type="<?= $passwordVal == "" ? "text" : "password" ?>"
id="log_password" name="log_password"
value="<?php echo ($log_password);?>"
placeholder="Passwort"
onfocus="if(this.value=='Passwort')this.value=''"
onblur="if(this.value=='') this.value=this.defaultValue;"/>
<?php endif;?>
</div>
【问题讨论】:
-
使用适当的
<label>元素。不要滥用value属性。 -
@Quentin 我想指出,如果使用
placeholder属性,<label>并不总是必要的。但是,建议每个<input>都有一个与之对应的<label>。 -
@Matt — 来自规范:placeholder 属性不应用作标签的替代品。 和 placeholder 属性表示一个简短的提示(一个词或短语)旨在帮助用户输入数据。提示可以是示例值或预期格式的简要说明。
-
@Quentin +1 支持我。 :-)
标签: php javascript html forms input