onblur没有返回最新的值

时间:2015-11-20 02:35:37

标签: php html

请原谅我的无知。我想在文本框外单击时始终保留输入框中的当前值(我通过更改默认值提供)。但是,如果修改后我再次单击文本框,然后在文本框外单击,则以下代码将返回默认值。但我希望始终在文本框中保留最新的值。

也许我必须在this.value=' <?php echo "$r1[MAJORS1]" ?>';区域进行更改,但不了解如何进行更改。

请帮助

onfocus="if(this.value!=''){ this.value=''; this.style.color='#000';}"
onblur="if(this.value==''){ this.value='<?php echo "$r1[MAJORS1]"?>';   this.style.color='#000';}"

1 个答案:

答案 0 :(得分:1)

我相信你一直在寻找:

<input type="text"
data-value="<?php echo htmlentities("$r1[MAJORS1]"); ?>"
placeholder="<?php echo htmlentities("$r1[MAJORS1]"); ?>"
onfocus="if(this.value!=''){
  this.value='';
  this.style.color='#000';
  this.setAttribute('placeholder',this.getAttribute('data-value'));
}"
onblur="if(this.value==''){
  this.value=this.getAttribute('data-value');
  this.style.color='#000';
}else{
  this.setAttribute('data-value',this.value);
}"
value="<?php echo htmlentities("$r1[MAJORS1]"); ?>">

虽然不是很漂亮。使用用户浏览器的默认功能会产生混淆的倾向。不过,我相信我的占位符用法会减少用户的注意力,使其输入将恢复为占位符所读取的内容。

请在此处查看我的jsfiddle:http://jsfiddle.net/3Lvs77bv/

但是,我不知道MAJORS1应该是$r1数组中的常量还是关键字。如果它是一个密钥,请务必引用它以防止警告,否则PHP会认为它是一个常量。但是,无论如何,如果未定义常量并将其视为数组中的键,PHP将会回退,但会产生警告。

修改
如果您想允许空白值,可以添加一个按钮来清除字段,如下所示:

http://jsfiddle.net/3Lvs77bv/1/

或者,正如我建议的那样,只需摆脱您尝试编码的所有混乱,这会影响用户的默认浏览功能,而只需使用this.select()代替当场地集中时:

http://jsfiddle.net/3Lvs77bv/2/