以下是使用jquery的脚本标记的示例HTML代码:
<html>
<head>
<meta charset="UTF-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var email_def= "Enter email address";
$('input[type="email"]').attr('value', email_def).focus(function() {
if ($(this).val() == email_def) {
$(this).attr('value', '');
}
}).blur(function() {
var val = $(this).val();
if (val == '') {
$(this).attr('value', email_def);
alert(val);
alert(email_def);
}
});
});
</script>
</head>
<body>
<form>
Email: <input type="email"> <input type="submit" id="submit">
</form>
</body>
</html>
重现的步骤:
$(this).attr('value', email_def);
。编辑:谢谢你的回答。 html5的占位符以及$(this).val();
行的替换都似乎正常工作
答案 0 :(得分:2)
而不是$(this).attr('value', email_def);
,请考虑$(this).val(email_def);
。它将按照您指定的方式运行。
Rafael建议使用HTML placeholder
是正确的,除非您对Internet Explorer有一些特殊需求。
答案 1 :(得分:1)
使用HTML5占位符属性
向用户提示可以在控件中输入的内容。该 占位符文本不得包含回车符或换行符。这个 当type属性的值为text时,属性适用 搜索,电话,网址或电子邮件;否则会被忽略。
<form action="<some action>">
<input type="email" id="emailForm" size="30" placeholder="Enter email address"><br>
<input type="submit" value="Submit">
</form>
答案 2 :(得分:1)
拉斐尔是对的。但是,如果您需要它在足够老的浏览器中工作以至于它们不支持占位符属性,只需切换值属性设置器以使用val()上的重载。所以:
$(this).val('Enter the email address') //for example
请参阅下面演示的内容(看起来只有模糊方法中的那个实际上是一个问题。
$(document).ready(function() {
var email_def = "Enter email address...";
$('input[type="email"]').attr('value', email_def).focus(function() {
//alert('focus');
if ($(this).val() === email_def) {
$(this).val('');
}
}).blur(function() {
if ($(this).val() === '') {
$(this).val(email_def);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<form>
Email:
<input type="email" id="emailForm" size="30" />
<input type="submit" id="submitForm" />
</form>