我正在尝试回显包含多个输入字段的表单。我想使用onblur和onfocus(请参阅下面代码中的条件),但是当我用php回显它时,javascript函数不起作用。任何帮助纠正问题\技术解释将不胜感激。
echo '<form action="file.php" method="post">
<input type="text" style="width: 450px" maxlength="50" value="' . $data . '" name="data" id="data"
onblur="if (this.value == "") {this.value = "data";}"
onfocus="if (this.value == "data") {this.value = "";}" />
<input type="submit">
</form>';
答案 0 :(得分:2)
这很难理解:
echo '<form action="file.php" method="post">
<input type="text" style="width: 450px" maxlength="50" value="' . $data . '" name="data" id="data"
onblur="if (this.value == "") {this.value = "data";}"
onfocus="if (this.value == "data") {this.value = "";}" />
<input type="submit">
</form>';
使用 heredoc 语法,如下所示:
echo <<< FORM
<form action="file.php" method="post">
<input type="text" style="width: 450px" maxlength="50" value="$data" name="data" id="data" onblur="if (this.value == '') {this.value = '$data';}"
onfocus="if (this.value == '$data') {this.value = '';}">
<input type="submit">
</form>
FORM;
请注意,我为单引号交换了一些双引号,因为它们是嵌套的。
对于事件处理程序(onfocus和onblur),外引号是双引号。这些包含属性值。在双引号内,任何字符串都必须单引号,以避免在完成之前关闭属性值。
http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
答案 1 :(得分:1)
这看起来就像你想用内联js事件实现的那样。如果该值在模糊时为空字符串,则将获得[data-default]值,如果该值为焦点上的[data-default]值,则将被清除。
在php中你应该同时设置[value]和[data-default]值。
echo '<input type="text" value="'. $data .'" data-default="'. $data . '">';
var formInput = document.querySelector('#data');
formInput.addEventListener('focus', function( e ){
if( this.value === this.dataset['default'] ){
this.value = '';
}
}, false );
formInput.addEventListener('blur', function( e ){
if( this.value === '' ){
this.value = this.dataset['default'];
}
}, false );
&#13;
<form action="file.php" method="post">
<input type="text" name="data" id="data" value="something" data-default="something" />
</form>
&#13;