Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML输入onfocus&;安布尔?_Javascript_Html_Effects_Onblur_Onfocus - Fatal编程技术网

Javascript HTML输入onfocus&;安布尔?

Javascript HTML输入onfocus&;安布尔?,javascript,html,effects,onblur,onfocus,Javascript,Html,Effects,Onblur,Onfocus,好的,今天我将制作一个帮助器HTML函数。看起来是这样的: function Input($name,$type,$lable,$value= null){ if (isset($value)) { //if (this.value=='search') this.value = '' echo '<label for="'. $name .'">'. $lable .'</label><input type="'.$type.'" name="

好的,今天我将制作一个帮助器HTML函数。看起来是这样的:

function Input($name,$type,$lable,$value= null){
  if (isset($value)) {
    //if (this.value=='search') this.value = ''
    echo '<label for="'. $name .'">'. $lable .'</label><input type="'.$type.'" name="'. $name .'" id="'. $name .'" value="'.$value.'" onfocus="if (this.value==\''.$value.'\') this.value = \'\' "/>';  
  }
  if (!isset($value)) {
    echo '<label for="'. $name .'">'. $lable .'</label><input type="'.$type.'" name="'. $name .'" id="'. $name .'" />'; 
  }
}
函数输入($name、$type、$lable、$value=null){
if(isset(价值)){
//如果(this.value=='search')this.value=''
回显“.$lable.”;
}
如果(!isset($value)){
回显“.$lable.”;
}
}
如您所见,如果您插入一个值,它将执行一些JavaScript,这样当我单击框时,框内的文本将消失

问题:当我们不在输入上时,如何使其具有值?(请查看stackoverflow上的搜索框,但是stackoverflow上的搜索框在我们没有指向输入框后不会返回?可能是使用onblur?我说的对吗

希望你明白我的意思

好吧,因为你们有些人没有明白我的意思 请看

当我没有点击它

当我点击它

当我不再点击它时

应该是

当我没有点击它

当我点击它

当我不再点击它时


如果我理解正确,那么使用这行HTML来实现这一效果

<input name="q" class="textbox" tabindex="1" onfocus="if (this.value=='search') this.value = ''" type="text" maxlength="80" size="28" value="search"> 

与您的问题无关,但您可以并且应该将第二个if语句替换为else语句

function Input($name,$type,$lable,$value= null){
  if (isset($value)) {
    //if (this.value=='search') this.value = ''
    echo '<label for="'. $name .'">'. $lable .'</label><input type="'.$type.'" name="'. $name .'" id="'. $name .'" value="'.$value.'" onfocus="if (this.value==\''.$value.'\') this.value = \'\' "/>';  
  }
  else {
    echo '<label for="'. $name .'">'. $lable .'</label><input type="'.$type.'" name="'. $name .'" id="'. $name .'" />'; 
  }
}
函数输入($name、$type、$lable、$value=null){
if(isset(价值)){
//如果(this.value=='search')this.value=''
回显“.$lable.”;
}
否则{
回显“.$lable.”;
}
}
因为如果isset($value)返回false,那么您就知道它没有被设置,因为它只能返回两个值中的一个,true或false


编辑:忽略此答案。编辑前不清楚问题是什么。

查看此页面的源代码显示以下内容

<form id="search" action="/search" method="get"> 
  <div> 
     <input name="q" class="textbox" tabindex="1" 
     onfocus="if (this.value=='search') this.value = ''" 
     type="text" maxlength="80" size="28" value="search"> 
  </div> 

您想要这个吗

<input ...
onfocus="if (this.value==this.defaultValue) this.value = ''"
onblur="if (this.value=='') this.value = this.defaultValue" />

更新:一些较新的浏览器只需添加占位符属性即可完成所需操作:

<input placeholder="Please enter your name" />

下面是根据您的代码编写的PHP

echo <<<END
<label for="$name">$lable</label>
<input type="$type" name="$name" id="$name" value="$value" 
 onfocus="if (this.value==this.defaultValue) this.value = ''" 
 onblur="if (this.value=='') this.value = this.defaultValue"/>
END;

echo或者,如果您希望无论输入什么文本都将其更改回默认值,请执行此操作

<input ... 
onfocus="if (this.value==this.defaultValue) this.value = ''" 
onblur="if (this.value!=this.defaultValue) this.value = this.defaultValue" />

试试这个。也许它可以帮助您:

<form action="/search" method="get">
<input type="text" name="q" value="Search..." onfocus="if (this.value == 'Search...') (this.value='')" onblur="if (this.value == '') (this.value='Search...')" />


谢谢你的修复。你的图像消失了。你应该上传它们,而不是像这样:),让我先研究一下:)仍然有一些问题<代码>回显“”$标签'
echo''$标签'工作!谢谢你接受了答案。你为什么还在调查?这正是SO使用的代码。它的行为和你在这个网站上看到的一模一样。你到底为什么要这么做?那么您也可以将其设置为只读。也许您更希望:
这样,如果在
输入时未输入文本,您就可以将文本取回。