我有一个输入文本:
<input name="Email" type="text" id="Email" value="email@abc.example" />
我想在 Stack Overflow 中设置一个默认值,例如“你的编程问题是什么?请具体描述。”,当用户点击时,默认值会消失。
我有一个输入文本:
<input name="Email" type="text" id="Email" value="email@abc.example" />
我想在 Stack Overflow 中设置一个默认值,例如“你的编程问题是什么?请具体描述。”,当用户点击时,默认值会消失。
为了以后的参考,我必须包含 HTML5 的方法来完成这个。
<input name="Email" type="text" id="Email" value="email@abc.example" placeholder="What's your programming question ? be specific." />
如果你的网页采用HTML5 Doctype,并且使用支持HTML5的浏览器,这段代码就能够生效。但是,很多浏览器目前还不支持它,所以至少IE用户将无法看到占位符。然而,你可以查看JQuery HTML5 placeholder fix « Kamikazemusic.com来获得解决方案。使用这个方法,你既可以非常现代化和符合标准,同时也可以为大部分用户提供功能。另外,提供的链接是一个经过充分测试和开发的解决方案,应该可以直接使用。
placeholder
属性和JavaScript回退,适用于不支持它的浏览器。--
为了支持通过表单进行Tab键操作的用户,您应该使用onfocus
和onblur
事件。
以下是一个示例:
<input type="text" value="email@abc.example" name="Email" id="Email"
onblur="if (this.value == '') {this.value = 'email@abc.example';}"
onfocus="if (this.value == 'email@abc.example') {this.value = '';}" />
placeholder
属性,并为尚未支持它的浏览器提供JavaScript回退。 - mqchenplaceholder
属性。它是为这些情况而设计的,而且有几个脚本可以为旧版浏览器添加兼容性。请查看 @MvanGeest 下面的答案。 - mqchen我认为这样写更加简洁。请注意输入框中使用了 "defaultValue" 属性:
<script>
function onBlur(el) {
if (el.value == '') {
el.value = el.defaultValue;
}
}
function onFocus(el) {
if (el.value == el.defaultValue) {
el.value = '';
}
}
</script>
<form>
<input type="text" value="[some default value]" onblur="onBlur(this)" onfocus="onFocus(this)" />
</form>
$("input:text").each(function ()
{
// store default value
var v = this.value;
$(this).blur(function ()
{
// if input is empty, reset value to default
if (this.value.length == 0) this.value = v;
}).focus(function ()
{
// when input is focused, clear its contents
this.value = "";
});
});
你可以将所有这些内容放入自定义插件中,像这样:
jQuery.fn.hideObtrusiveText = function ()
{
return this.each(function ()
{
var v = this.value;
$(this).blur(function ()
{
if (this.value.length == 0) this.value = v;
}).focus(function ()
{
this.value = "";
});
});
};
以下是如何使用该插件:
$("input:text").hideObtrusiveText();
使用这段代码的优点包括:
非jQuery方法:
function hideObtrusiveText(id)
{
var e = document.getElementById(id);
var v = e.value;
e.onfocus = function ()
{
e.value = "";
};
e.onblur = function ()
{
if (e.value.length == 0) e.value = v;
};
}
if (this.value == v) this.value = v;
应该改为 if (this.value === "") this.value = v;
,2)即使是有效的非默认值,您也会在焦点清除该值,3)不要假设他们正在使用jQuery。 - Nick Craver===
吗?我认为我们总是可以假设文本输入的值是一个字符串,除了""
之外不会有其他评估结果。 - Brian Nickel将以下内容输入标签内,只需添加onFocus="value=''",这样您最终的代码就像这样:
<input type="email" id="Email" onFocus="value=''">
placeholder
标签,而不是 value
。<input name="Email" type="text" id="Email" placeholder="输入您的问题" />
placeholder 属性指定了输入框期望的值的短提示信息(例如示例值或预期格式的简短说明)。
在用户输入值之前,该简短提示将显示在输入框中。
注意:placeholder 属性适用于以下输入类型:文本、搜索、URL、电话号码、电子邮件和密码。
我认为这会有所帮助。
input[submit] {
font-size: 0 !important;
}
验证和检查值对于 PHP 编程至关重要
这里是非常简单的JavaScript代码。它对我来说运行良好:
// JavaScript:
function sFocus (field) {
if(field.value == 'Enter your search') {
field.value = '';
}
field.className = "darkinput";
}
function sBlur (field) {
if (field.value == '') {
field.value = 'Enter your search';
field.className = "lightinput";
}
else {
field.className = "darkinput";
}
}
// HTML
<form>
<label class="screen-reader-text" for="s">Search for</label>
<input
type="text"
class="lightinput"
onfocus="sFocus(this)"
onblur="sBlur(this)"
value="Enter your search" name="s" id="s"
/>
</form>
<textarea placeholder="写点什么..."></textarea>
也能很好地工作。 - Danny Beckett