与onblur onfocus的回声形式

时间:2016-01-23 02:25:05

标签: javascript php

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

2 个答案:

答案 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 . '">';

&#13;
&#13;
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;
&#13;
&#13;