回声形式与模糊对焦

echo form with onblur onfocus

本文关键字:模糊 回声      更新时间:2023-09-26

我正在尝试回显包含多个输入字段的表单。我想使用 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>';

很难阅读:

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;

请注意,我将一些双引号换成了单引号,因为它们是嵌套的。

对于事件处理程序(焦点和模糊),外部引号是双引号。 这些值将属性值括起来。 在双引号中,任何字符串都必须使用单引号,以避免在属性值完成之前关闭属性值。

http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

这看起来像您尝试使用内联 js 事件实现的目标。 如果该值在模糊中是空字符串,它将获得 [数据默认值] 值,如果该值是焦点上的 [数据默认值] 值,它将被清除。

在 PHP 中,您应该同时设置 [值] 和 [数据默认值] 值。

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 );
<form action="file.php" method="post">
  <input type="text" name="data" id="data" value="something" data-default="something" />
</form>